VB-Homepage Tipp 173

Objekthandles und Class Names ermitteln

Wenn Sie mit externen Programmen zusammen arbeiten möchten oder einfach nur abfragen möchten, ob ein bestimmtes Programm läuft, das nicht von Ihrem Programm aufgerufen wurden ist, ist es notwendig, entweder den Namen des Programms (das ist nicht der Programmname, sondern ein interner Name) oder den Handle des Programms zu wissen.
Mit diesem Tipp sind Sie in der Lage, den Handle und den Class Namen zu ermitteln (den ein Programm kann viele Objekte mit Class Namen besitzen) und sich diese Angaben für Ihr eigenes Projekt nutzbar zu machen.

1. Legen Sie sich ein neues Projekt an und fügen Sie zwei Label Objekte und einen Timer hinzu.
Label1.Name = lblhandle
Label2.Name = lblclassname
Timer1.Name = tmr1
Timer1.interval = 500

2. Definieren Sie unter Allgemein/Deklarationen folgende APIs
Option Explicit

Private Type POINTAPI
   x As Long
   y As Long
End Type

Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

3. Der Timer erhält folgende Anweisungen.
Dim P As POINTAPI, l As Long, h As Long, a$
l = GetCursorPos(P)
h = WindowFromPoint(P.x, P.y)
a$ = Space$(128)
l = GetClassName(h, a$, 128)
a$ = Left$(a$, l)
lblHandle = h
lblClassName = a$

4. Nun können Sie mit F5 Ihr Projekt starten und staunen.

Tipp-Download

Quelle : Matt Hart - mhart@taascforce.com

Zurück zur Übersichtsseite