Meine VB.NET-Anwendung soll überwachen, welche Anwendung gerade im obersten Fenster läuft. Ich habe den folgenden Ansatz mit einem Timer versucht:
Declare Function GetActiveWindow Lib "user32" () As System.IntPtr
Declare Function GetForegroundWindow Lib "user32" () As System.IntPtr
Public Declare Auto Function GetWindowText Lib "user32" _
(ByVal hWnd As System.IntPtr, _
ByVal lpString As System.Text.StringBuilder, _
ByVal cch As Integer) As Integer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Caption As New System.Text.StringBuilder(256)
Dim hWnd As IntPtr = GetForegroundWindow()
GetWindowText(hWnd, Caption, Caption.Capacity)
'Caption now holds the title of the topmost window
End Sub
Daran kann ich erkennen, dass z. B. Outlook oder Internet Explorer das oberste Fenster ist, da der Name in der Titelleiste des Fensters steht. Wenn der Benutzer jedoch eine neue E-Mail in Outlook verfasst, lautet der Titel des Fensters "Unbenannte Nachricht" und gibt keinen Hinweis darauf, welche Anwendung im Fenster ausgeführt wird.
Wie kann ich herausfinden, welche Anwendung mit dem obersten Fenster verbunden ist?
Hilfe ist erwünscht!