Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Handle Finden (https://www.delphipraxis.net/99989-handle-finden.html)

Xzeer 20. Sep 2007 16:34


Handle Finden
 
Hallo,

Ich verstehe nicht, wie man Handles finden kann und dann benutzt. Das Tutorial von Luckie habe ich schon gelesen, aber so richtig verstehen tut ich den Code nicht. Erstaml würde mich interessieren, wie man ein Handle überhaupt findet. Als Aufgabe habe ich mir gestellt, das Windows-Explorer Fenster zu finden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  window: hwnd;
begin
  window:=findwindow('Explorer', nil);
  if window<>0 then
  begin
    showmessage('gefunden');
  end
  else
  begin
    showmessage('nicht gefunden');
  end;
end;
So bekomme ich immer die Meldung "nicht gefunden". Auch...

Delphi-Quellcode:
window:=findwindow('Windows-Explorer', nil); //...und...
window:=findwindow('Dokumente', nil);
geben keine andere Meldung heraus.

Wie finde ich denn ein bestimmtes Handle überhaupt???? :gruebel:

Apollonius 20. Sep 2007 16:44

Re: Handle Finden
 
Niemand ist gezwungen, den Klassennamen eines Fensters charakteristisch zu wählen. Setze für den ersten Parameter nil ein und gib im zweiten den Fenstertitel an, wenn du den Fensterklassennamen nicht kennst.

Xzeer 20. Sep 2007 16:48

Re: Handle Finden
 
ahhh...schon viel besser :thumb:

hab jetzt so:

Delphi-Quellcode:
window:=findwindow(nil, 'Dokumente');
Und das geht immer, also es reicht der Fenstertitel, so wie er im Taskmannager und in der Taskleiste steht?

Edit: Aber wenn ich unter die showmessages jetzt folgendes schreibe, bekomme ich die Fehlermeldung, das eine anweisung erforderlich ist, und keine Integer Zahl.

Delphi-Quellcode:
sendmessage(window, WM_Close, 0, 0);
Woran liegt das denn?

Apollonius 20. Sep 2007 16:56

Re: Handle Finden
 
Ja, aber unpraktisch wird es, wenn der Titel vom geöffneten Dokument abhängt. Da findet man lieber einmal den Klassennamen und hat dann keinen Ärger mehr.

Rastaman 20. Sep 2007 17:17

Re: Handle Finden
 
An dem Sendmessage is nix falsch.
Poste ma die Zeilen darüber bzw darunter.

Xzeer 20. Sep 2007 17:51

Re: Handle Finden
 
Zitat:

Zitat von Rastaman
An dem Sendmessage is nix falsch.
Poste ma die Zeilen darüber bzw darunter.

Habs schon rausgefunden, ich habe erst das geschrieben

Delphi-Quellcode:
sendmessage(window,wm_close, 0, 0)
die leerzeichen sind aber falsch, ich denke mal, weils dann keine integer zahl mehr ist. Richtig ist es so:

Delphi-Quellcode:
sendmessage(window,wm_close,0,0)

Rastaman 20. Sep 2007 20:10

Re: Handle Finden
 
Du kannst auch 1000 Leerzeichen machen und es klappt :|


Alle Zeitangaben in WEZ +1. Es ist jetzt 15: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