Keine Lösung hat bei mir funktioniert... ich mach anscheinend irgendwas falsch...
Meine Lösungen:
1. Popov:
Gibt bei dem Fenster, was ich brauche, nur den Parent-Namen usw zurück
2. mkinzler:
Bekomme ich AccessViolation Fehler.
3. NickelM:
Siehe 1.
4. himitsu:
Siehe 2.
PS: Code bei 4:
Delphi-Quellcode:
function getWindowCaption(hWnd:Integer):String;
var
tmpInt1:SmallInt;
tmpInt2:Word;
tmpString1:String;
begin
if Windows.IsWindow(hWnd) then
begin
tmpInt1:=Windows.GetWindowTextLength(hWnd);
tmpString1:='';
for tmpInt2:=1 to tmpInt1 do
begin
tmpString1:=System.Concat(tmpString1,'?');
end;
Windows.GetWindowText(hWnd, System.Addr(tmpString1[1]),tmpInt1+1);
result:=tmpString1;
end
else
begin
Result:='';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
p: TPoint;
Mainbuffer: array [0..255] of Char;
MainWndCaption, ChildWndCaption, Childbuffer: String;
ParentHWND: THandle;
ChildHWND: TControl;
begin
ShowMessage('Du hast jetzt 5 Sekunden um den Mauszeiger über die Hauptform zu bringen.');
Sleep(5000);
GetCursorPos(p);
ParentHWND := WindowFromPoint(p);
If ParentHWND = 0 then
begin
ShowMessage('Das Fenster konnte nicht ermittelt werden!');
Exit;
end;
GetClassName(ParentHWND, Mainbuffer, length(Mainbuffer));
MainWndCaption := GetWindowCaption(ParentHWND);
Label1.Caption := 'MainWindow: ClassName: '+string(Mainbuffer)+'; Caption: '+MainWndCaption;
ShowMessage('Klassenname: '+string(Mainbuffer)+#10+'Bezeichnung: '+MainWndCaption+#10+'Du hast jetzt 5 Sekunden Zeit um den Mauszeiger über das Objekt zu bringen.');
Sleep(5000);
GetCursorPos(p);
ChildHWND := FindControl(ParentHWND);
Childbuffer := ChildHWND.ClassName;
ChildWndCaption := ChildHWND.Name;
Label2.Caption := 'ChildWindow: ClassName: '+Childbuffer+'; Caption: '+ChildWndCaption;
end;
... Habt ihr dazu Ideen?