Wie oft kennt man das Handle eines Fenster, weiss aber nicht, zu welcher Anwendung das Fenster gehört. Mit unserem nachfolgendem Tipp stellen wir Ihnen genau für dieses Problem eine entsprechende Lösung vor. Die Funktion GetEXEFromHWND ermittelt den Dateinamen der Anwendung eines übergebenen Fensterhandles. Fügen Sie nachfolgenden Code in Ihr Projekt ein: ' alle benötigten API-Deklarationen Private Declare Function GetWindowThreadProcessId Lib "user32.dll" ( _ ByVal hwnd As IntPtr, _ ByRef lpdwProcessId As Integer) As Integer ''' <summary>Gibt den Namen der Exe für das Fenster, oder nothing, zurück.</summary> ''' <param name="hWnd">Fensterhandle</param> Public Function GetExeFromHWND(ByVal hWnd As IntPtr) As String Dim processID, threadID As Integer threadID = GetWindowThreadProcessId(hWnd, processID) Dim pid As Process = Process.GetProcessById(processID) Try Return pid.Modules(0).ModuleName Catch ex As Exception Return "" End Try End Function Erstellen Sie eine Form und plazieren Sie darauf einen CommandButton. Beim Klicken wird dann der EXEName der aktuellen Anwendung ermittelt: Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click MsgBox GetExeFromHWND(Me.Handle) End Sub Erweitertes Beispiel Fügen Sie hierzu folgenden Code in den Code-Teil der Form ein: ' zunächst die benötigten API-Deklarationen Private Declare Function WindowFromPoint Lib "user32" ( _ ByVal xPoint As Integer, _ ByVal yPoint As Integer) As IntPtr ' Timer-Objekt Dim WithEvents oTimer As Timer Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Timer initialisieren oTimer = New Timer oTimer.Interval = 10 oTimer.Enabled = True End Sub Private Sub oTimer_Tick(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles oTimer.Tick ' aktuelle Mausposition Dim pt As Point = Cursor.Position ' Handle des Fensters Dim hWnd As IntPtr = WindowFromPoint(pt.X, pt.Y) Label7.Text = hWnd.ToString Label9.Text = GetExeFromHWND(hWnd) End Sub Private Sub Form1_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing ' Timer deaktivieren oTimer.Enabled = False oTimer.Dispose() End Sub Dieser Tipp wurde bereits 15.194 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Neu! sevPopUp 2.0 ![]() Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
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. |