Ik probeer de handles van alle childs in een andere applicatie te vinden. De gebruikte componenten in de andere Applicatie zijn bekend. (Is eigen App).
Dus zijn de captionnamen ook bekend.
Ik dacht nu met behulp van GetClassInfo de verschillende componenten te kunnen identificeren, omdat TWndClass ook de captionnaam bevat.
Als ik echter onderstaande code gebruik krijg ik de error: 'Class does not exist'.
GetClassName levert wel de goede namen op. Form1 heeft een button en een Editbox. ClassName is eerste keer TEdit en tweede keer TButton.
Weet iemand wat ik nu nog fout doe? GetClassName werkt wel goed, maar GetClassInfo niet (Error: Class does not exist).
Dus zijn de captionnamen ook bekend.
Ik dacht nu met behulp van GetClassInfo de verschillende componenten te kunnen identificeren, omdat TWndClass ook de captionnaam bevat.
Als ik echter onderstaande code gebruik krijg ik de error: 'Class does not exist'.
GetClassName levert wel de goede namen op. Form1 heeft een button en een Editbox. ClassName is eerste keer TEdit en tweede keer TButton.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| procedure TForm1.OnTest(Sender: TObject); var Wnd : HWND; begin Wnd := FindWindow(nil, 'Form1'); EnumChildWindows(Wnd, @GetEditCtrl,1); end; Function GetEditCtrl(Wnd : HWND): Boolean; stdcall; var ClassName : array[0..127] of char; ErrorStr : array[0..127] of char; ClassInfo: TWndClass; begin GetClassName(Wnd, ClassName, SizeOf(ClassName)); GetClassInfo(Wnd, ClassName, ClassInfo); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, GetLastError,0 , ErrorStr, 127, nil); ShowMessage(ErrorStr); end; |
Weet iemand wat ik nu nog fout doe? GetClassName werkt wel goed, maar GetClassInfo niet (Error: Class does not exist).