PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : fremdes dialogwindow auslesen


cyberear
20.01.2005, 13:42
Ich habe das Problem, dass ich die controls von einem fremden Dialog window auslesen will, aber nicht an die controls rankomme. Mit
HWND GetNextDlgGroupItem(
HWND hDlg, // handle of dialog box
HWND hCtl, // handle of control
BOOL bPrevious // direction flag
);
also hdlFirstControl = GetNextDlgGroupItem (hDlg, 0, FALSE)
kriege ich zwar einen handle (sieht jedefalls so aus) vom ersten Control, aber mit FirstControlID = GetDlgCtrlID (hdlFirstControl ) kriege ich nur 0, also keine ID raus. Kann es sein, dass der owner des dialog windows dies unterbinden kann?
Oder wie komme ich an die controls ran? Probiere schon seit Tagen :mauer:


Diabolo
21.01.2005, 14:29
Vielleicht hilft es Dir weiter die HWnd der Childs mit "EnumChildWindows" auszulesen und dann mit dem gewonnenen HWnd den Klassennamen mit GetClassName oder GetWindowClass zu ermitteln.


So habe ich es mal gelöst, alle Fenster innerhalb Windows zu erfahren.

cyberear
21.01.2005, 15:31
über die windows class zu gehen hab ich schon gemacht. XP tut so, als gäbe es keine controls, obwohl ich die doch sehen kann. Verflixt aber auch!!!

Nemesis
07.02.2005, 14:47
über die windows class zu gehen hab ich schon gemacht. XP tut so, als gäbe es keine controls, obwohl ich die doch sehen kann. Verflixt aber auch!!!

Versuch doch mal mit Spy++ oder etwas ähnlichem an die Handles zu kommen. Falls diese Programme das nicht schaffen wirst du es wohl auch nicht schaffen.

Diabolo
07.02.2005, 17:05
Hmm, ich verstehe das jetzt nicht so ganz.

Was ich meinte ist folgendes :

HWnd des Fensters besorgen, in dem Du die Controls ermitteln willst. Dann mit EnumChildWindows() alle Child-HWnds besorgen und mittels GetClassName() bzw. GetWindowClass Informationen einholen, um welche WindowsClass es sich handelt. Die Controls müssten ja alle einem Klassennamen zugehören, dann weißt Du schonmal welche Klasse für Dein Control verwendet wird.

Hier ist mal eine Demoversion eines Programms, das ich in VB6 geschrieben habe.

http://home.arcor.de/pascalscholtes/Downloads/WindowHandles%20mit%20TreeView.exe

Wenn Du damit die Controls Deines Programms auslesen kannst, dann ist es nur eine Frage der Technik.

Ich code zwar in VB, aber ich denke daß wir trotzdem auf eine Lösung kommen können.