![]() |
Re: FensterHandle über den Prozess ermitteln
Ok das hilft mir schonmal zu 50% weiter nun nur die Frage, wie verbinde ich dann sowas in der Procedur?
Damit ich dann eben Testläufe machen kann? Muss dann mein quellcode der sich dann das handle holt in die klammern verstaut werden von enumWindows? MFG |
Re: FensterHandle über den Prozess ermitteln
Ich würde das in die Callbackprozedur legen oder von da aus eine andere mit dem Fensterhandle als Parameter aufrufen. ;-)
|
Re: FensterHandle über den Prozess ermitteln
Stehe grad uffn schlauch, hab mal bissle durchgetest aber nie funzte es, zu testzwecken behalte ich nun das auflisten der Klassen bei und baue Vorher nur eben eine Abfrage rein.
Ist es ein falscher Weg wenn ich einfach nur Frage wenn classname gleich diesen Ausdruck hat dann adde den Klassennamen ?!?
Delphi-Quellcode:
function EnumWindowsProc(wHandle: HWND; lb: TListBox): Bool; stdcall; export;
var ClassName: array[0..255] of char; ClassName_gesucht: array[0..255] of char; begin GetClassName(wHandle, ClassName, SizeOf(ClassName)); // Klassenname ermitteln ClassName_gesucht:= 'wxWindowClassNR'; if Classname = ClassName_gesucht then lb.Items.Add(string(ClassName)); end; procedure TForm1.Label1Click(Sender: TObject); begin EnumWindows(@EnumWindowsProc, Integer(Listbox1)); end; |
Re: FensterHandle über den Prozess ermitteln
Passiert nix, oder was passiert (nicht)?
|
Re: FensterHandle über den Prozess ermitteln
hab classname_gesucht mal mit als array angegeben aber passiert nie was, wollte sagen eben wenn classname übereinstimmt dann soll ereben alle classnamen mir mal anzeigen damitich erstmal weis das es funktioniert der vergleich, aber irgendwie komme ich net uff den richtigen vergleich!
|
Re: FensterHandle über den Prozess ermitteln
Moin moin,
in deiner Callback Funktion fehlt ein Result := True ... So wie es jetzt aussieht, steigt er nach dem 1. Aufruf aus. |
Re: FensterHandle über den Prozess ermitteln
Ja sorry vergessen trotzdem passiert einfach nix dann beim klicken auf mein Label, aber rein vom quellcode mit
Delphi-Quellcode:
ist den mein Vergleich richtig ausgedrückt?
result := true;
|
Re: FensterHandle über den Prozess ermitteln
Und wenn Du die Arrays vor Gebrauch erst einmal nullst?
Delphi-Quellcode:
FillChar(Classname,SizeOf(Classname),#0);
|
Re: FensterHandle über den Prozess ermitteln
löl
recht Herzlichen Dank nun hat es geklappt MFG Edit: Mir hat sich grad ein Neues Problem eröffnet. Folgende Thematik: Also ich will mir aus einem Programm 2 Zahlen holen (X und Y Koordinate) Nur das Problem ist, das eine andere Anwendung schon alle Fenster (Wo ich x und y hole) via WinAPI in seine eigenen Tabsheets gezogen hat! Muss ich dem Prog nun sagen das jeder Tab eigentlich eigenes Window ist? Wenn ja wie müsste ich an die Sache rangehen? MFG
Delphi-Quellcode:
function EnumWindowsProc(wHandle: HWND; lb: TListBox): Bool; stdcall; export;
var Title, ClassName: array[0..255] of char; ClassName_gesucht: array[0..255] of char; xcor,ycor: String; begin Result:= true; FillChar(Classname,SizeOf(Classname),#0); GetWindowText(wHandle, Title, SizeOf(Title)); GetClassName(wHandle, ClassName, SizeOf(ClassName)); // Klassenname ermitteln Classname_gesucht := 'WindowsForms10.Window.8.app.0.378734a' ; if Classname = ClassName_gesucht then begin wHandle := FindWindowEx(wHandle, 0, 'WindowsForms10.SysTabControl32.app.0.378734a', nil); wHandle := FindWindowEx(wHandle, 0, 'WindowsForms10.Window.8.app.0.378734a', nil); wHandle := FindWindowEx(wHandle, 0, 'wxWindowClassNR', nil); wHandle := FindWindowEx(wHandle, 0, 'wxWindowClassNR', 'ID_PANEL1'); wHandle := FindWindowEx(wHandle, 0, 'wxWindowClassNR', 'ID_PANEL2'); wHandle := GetDlgItem(wHandle, 532); if wHandle <> 0 then begin xcor := PCHar('x: ' + GetWinText(wHandle)); lb.Items.Add(xcor); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin EnumWindows(@EnumWindowsProc, Integer(Listbox1)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz