| |

Visual-Basic EinsteigerRe: AppActivate AppID, vbMaximizedFocus | |  | Autor: RalfH | Datum: 29.09.03 08:22 |
| Servus,
die Funktion AppActivate kann nicht die Fenstergröße ändern. Der 2. Parameter (BOOLEAN) gibt an, das VB solange warten soll, bis das Programm auch tatsächlich aktiviert wurde (kann u.U. zu HangUp's führen).
Füge einfach den folgenden Code in ein Modul(!). Soll der Code in ein Form-Modul, musst Du alle Public's bis einschließlich Public Enum vbWindowState in Private ändern.
Anschließend musst Du nur noch in Deinem "alten" Code die Zeile:
AppActivate AppID, vbMaximizedFocus
in:
WindowActivate AppID, ShowMaximized
ändern.
Option Explicit
' ermittelt das Handle eines Fenster durch Klasse oder Titel
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As Long
' ermittelt das nachfolgende Fenster (mit GW_HWNDNEXT)
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Public Const GW_HWNDNEXT = 2
' liefert TRUE, wenn eine Fenster minimiert ist
Public Declare Function IsIconic Lib "user32" ( _
ByVal hwnd As Long) As Long
' liefert TRUE, wenn eine Fenster maximiert ist
Public Declare Function IsZoomed Lib "user32" ( _
ByVal hwnd As Long) As Long
' ändert den Fensterstatus
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Public Const SW_SHOWNORMAL As Long = 1
Public Const SW_SHOWMAXIMIZED As Long = 3
Public Const SW_MINIMIZE As Long = 6
' ermittelt die Prozess-ID eines Fenster anhand des Fenster-Handle
Public Declare Function GetWindowThreadProcessId Lib "user32" ( _
ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Enum vbWindowState
ShowNormal = SW_SHOWNORMAL
ShowMaximized = SW_SHOWMAXIMIZED
ShowMinimized = SW_MINIMIZE
End Enum
' gibt die Prozess-ID eines Fenster zurück
Private Function GetWindowTaskID(ByVal hwnd As Long) As Long
Dim lRet As Long, lProcessID As Long
' Prozess-ID des Fensters ermitteln
lRet = GetWindowThreadProcessId(hwnd, lProcessID)
' Rückgabewert setzen
GetWindowTaskID = lProcessID
End Function
' Aktiviert ein Fenster mit Hilfe der Prozess-ID
Public Function WindowActivate(ByVal AppID As Long, _
Optional ByVal AppState As vbWindowState = ShowNormal) As Boolean
' on error resume next
Dim Handle As Long, lTaskID As Long
' erstes Fenster ermitteln
Handle = FindWindow(vbNullString, vbNullString)
' alle Fenster durchlaufen
Do Until Handle = 0
' Prozess-ID des gefundenen Fensters ermitteln
lTaskID = GetWindowTaskID(Handle)
' Prozess-ID des gefundenen Fensters mit der übergebenenen
' Prozess-ID (AppID) vergleichen, wenn beide gleich sind,
' dann ist das gefundene Fenster das gesuchte Fenster
If lTaskID = AppID Then
' Fensterstatus prüfen und ggf. ändern
Select Case AppState
' normale Größe
Case ShowNormal
' Fenstergröße nur ändern, wenn Fenster minimiert
' oder maximiert ist
If IsIconic(Handle) Or IsZoomed( _
Handle) Then ShowWindow Handle, AppState
' Maximiert
Case ShowMaximized
' Fenstergröße nur ändern, wenn Fenster nicht maximiert ist
If IsZoomed(Handle) = False Then ShowWindow Handle, AppState
' Minimiert
Case ShowMinimized
' Fenstergröße nur ändern, wenn Fenster nicht minimiert
If IsIconic(Handle) = False Then ShowWindow Handle, AppState
End Select
' Fenster aktivieren
AppActivate AppID, False
' Funktions-Rückgabewert auf erfolgreich (TRUE) setzen
WindowActivate = True
' Funktion beenden
Exit Function
End If
' nächstes Fenster suchen
Handle = GetWindow(Handle, GW_HWNDNEXT)
Loop
' hier gehts nur hin, wenn kein Fenster mit der angegebenen
' Prozess-ID (also AppID) gefunden wurde
' Funktions-Rückgabewert auf NICHT erfolgreich (FALSE) setzen
WindowActivate = False
End Function Viel Spass,
R@lf |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|