| |
|
|
| KompilierenMarcaSeparaciónSource wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Fensterhandles im System finden
PRFellow-Vorlage
Autor: Thomas Hölzer
Ein handgemachter Ersatz für die API-Funktion EnumChildWindows,
die mangels Callback bislang (6.6) nicht genutzt werden kann.
Es werden alle einem Fenster untergeordneten Kindfenster aufgezählt
Im Beispiel sind das die dem Desktop untergeordneten Hauptfenster.
Mit etwas rekursivem Basteln läßt sich daraus z.B. ein Spy-Tool machen.
Weitere Informationsquellen sind u.a.:
GetClassLong,GetClassInfoEx,GetWindowLong,
GetWindowRect,GetClientRect,
GetWindowThreadProcessId etc.
Warnung aus win32.hlp:
An application that calls GetWindow to perform this task risks
being caught in an infinite loop or referencing a handle to
a window that has been destroyed.
Def GetWindow(2) !USER32,GetWindow
Def GetClassName(3) !USER32,GetClassNameA
Declare cname#
Proc EnumChildren
Parameters parent&
Declare result&,cn$
Dim cname#,64
GetClassName(parent&,cname#,64)
Let cn$=String$(cname#,0)
Let result&=GetWindow(parent&,5)
UseCursor 2
While Neq(result&,0)
AddString Add$(Handle: ,Format$(0###,result&))
AddString Add$(Text: ,GetText$(result&))
GetClassName(result&,cname#,64)
AddString Add$(Klasse: ,String$(cname#,0))
AddString
AddString MkStr$(---,32)
Let result&=GetWindow(result&,2)
Wend
Dispose cname#
UseCursor 0
ListBox$(Add$(Kindfenster von ,cn$),2)
ClearList
EndProc
Beispiel
Cls
EnumChildren %desktop
|
|
|
| |
|
|