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 |