Frage: Wie kommt man von der Prozess-ID zum Fenstertitel der dazugehörigen Anwendung? ' benötigte API-Deklarationen Private Declare Function GetWindowThreadProcessId Lib "user32" ( _ ByVal hwnd As Long, _ lpdwProcessId As Long) As Long Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function GetWindow Lib "user32" ( _ ByVal hwnd As Long, _ ByVal wCmd As Long) As Long Private Declare Function GetParent Lib "user32" ( _ ByVal hwnd As Long) As Long Private Declare Function GetWindowText Lib "user32" _ Alias "GetWindowTextA" ( _ ByVal hwnd As Long, _ ByVal lpString As String, _ ByVal cch As Long) As Long Private Const GW_HWNDNEXT = 2 ' Ermittelt das Fensterhandle anhand einer Prozess-ID Private Function ProcID2hWnd(ByVal ProcID As Long) As Long ' alle Fenster durchlaufen und nach Process-ID suchen Dim lngHWnd As Long Dim lngProcTaskID As Long lngHWnd = FindWindow(vbNullString, vbNullString) Do While lngHWnd <> 0 ' Existiert kein Eltern-Fenster, dann ProcssID ' ermitteln und vergleichen If GetParent(lngHWnd) = 0 Then GetWindowThreadProcessId lngHWnd, lngProcTaskID ' Handelt es sich um den gesuchten Prozess? If lngProcTaskID = ProcID Then ' Fenster-Handle zurückgeben und Schleife ' verlassen! ProcID2hWnd = lngHWnd Exit Do End If End If ' Nächstes Fenster lngHWnd = GetWindow(lngHWnd, GW_HWNDNEXT) Loop End Function Beispiel für den Aufruf: Dim nHWnd As Long Dim sTitle As String Dim nResult As Long Dim nProcessID As Long ' Notepad starten nProcessID = Shell("notepad.exe") ' Fensterhandle anhand ProcessID ermitteln nHWnd = ProcID2hWnd(nProcessID) If nHWnd <> 0 Then ' und jetzt den Fenstertitel auslesen sTitle = Space$(255) nResult = GetWindowText(nHWnd, sTitle, Len(sTitle)) If nResult > 0 Then sTitle = Left$(sTitle, nResult) MsgBox sTitle End If End If Dieser Tipp wurde bereits 23.067 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |