AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi FensterHandle über den Prozess ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

FensterHandle über den Prozess ermitteln

Ein Thema von Asatru · begonnen am 13. Apr 2009 · letzter Beitrag vom 15. Apr 2009
Antwort Antwort
Seite 3 von 3     123   
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#21

Re: FensterHandle über den Prozess ermitteln

  Alt 14. Apr 2009, 16:46
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
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#22

Re: FensterHandle über den Prozess ermitteln

  Alt 14. Apr 2009, 17:28
Ich würde das in die Callbackprozedur legen oder von da aus eine andere mit dem Fensterhandle als Parameter aufrufen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#23

Re: FensterHandle über den Prozess ermitteln

  Alt 14. Apr 2009, 17:58
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;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#24

Re: FensterHandle über den Prozess ermitteln

  Alt 14. Apr 2009, 19:51
Passiert nix, oder was passiert (nicht)?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#25

Re: FensterHandle über den Prozess ermitteln

  Alt 14. Apr 2009, 21:44
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!
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#26

Re: FensterHandle über den Prozess ermitteln

  Alt 15. Apr 2009, 00:09
Moin moin,

in deiner Callback Funktion fehlt ein Result := True ...
So wie es jetzt aussieht, steigt er nach dem 1. Aufruf aus.
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#27

Re: FensterHandle über den Prozess ermitteln

  Alt 15. Apr 2009, 15:25
Ja sorry vergessen trotzdem passiert einfach nix dann beim klicken auf mein Label, aber rein vom quellcode mit

result := true; ist den mein Vergleich richtig ausgedrückt?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#28

Re: FensterHandle über den Prozess ermitteln

  Alt 15. Apr 2009, 15:29
Und wenn Du die Arrays vor Gebrauch erst einmal nullst?FillChar(Classname,SizeOf(Classname),#0);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Asatru

Registriert seit: 30. Mai 2007
Ort: Leipzig
78 Beiträge
 
#29

Re: FensterHandle über den Prozess ermitteln

  Alt 15. Apr 2009, 15:36
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz