vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: System/Windows · Prozesse/Tasks   |   VB-Versionen: VB.NET30.07.07
EXE-Name anhand eines Fenster-Handles ermitteln (.NET)

Dieser Tipp zeigt, wie man anhand eines Fensterhandles den EXE-Namen der zugehörigen Anwendung ermitteln kann.

Autor:   mikeb69Bewertung:     [ Jetzt bewerten ]Views:  14.599 
www.powerdesktop-online.deSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

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
Plazieren Sie auf die Form zwei Label-Controls lblHandle und lblEXEName. In einem sehr kurzen Intervall soll ständig das Handle des Fensters ermittelt werden, über das sich die Maus gerade befindet. Und anhand des Fensterhandles wird dann der entsprechende EXE-Name der Anwendung ermittelt und angezeigt.

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 14.599 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 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