Einzelnen Beitrag anzeigen

Destroyer446

Registriert seit: 17. Jan 2011
67 Beiträge
 
#6

AW: ClassName / Caption von Objekt erhalten

  Alt 16. Jun 2012, 20:31
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?
  Mit Zitat antworten Zitat