Entwickler-Ecke

Windows API - findWindow funktioniert nicht


Peter18 - Fr 06.12.13 15:22
Titel: findWindow funktioniert nicht
Ein freundliches Hallo an alle,

ich möchte in einem Programm (Delphi 4) feststellen, ob mein Mailer "Pegasus" gestartet ist. Die Funktion liefert mit konstanter Bosheit 0, egal ob Pegasus läuft oder nicht. Wenn ich die Funktion in "Auswerten/Ändern" teste erhalte ich irgend einen Wert. Der scheint jedoch eher zufällig zu sein, denn er ändert sich, aber nicht immer wenn ich Pegasus starte oder beende. Auch nil als Klassenname ändert nichts.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  H : HWND;

begin
   H := FindWindow(PChar('FRAME'),PChar('Pegasus Mail'));
   if H = 0 then messagebox(0,'Pegasus Mail is not running','Alert !',mb_ok);


Ich hoffe jemand kann mir das erklären, denn "FindWindow" scheint ja zu funktionieren.

Grüße von der sehr windigen Nordsee (Wer raus geht sollte einen Anker dabei haben!)

Peter


jaenicke - Fr 06.12.13 16:06

Bist du sicher, dass es nur ein passendes Fenster dort gibt? Hast du das eibnmal z.B. mit dem Window Detective geprüft?


Peter18 - Fr 06.12.13 16:50

Hallo jaenicke,

habe es gerade geprüft: In der Liste taucht "FRAME" nur ein mal auf. Die Preisfrage ist der 2. Parameter. Wird auch auf Teilstring geprüft, b.z.w. ist der Text in der blauen Leiste gemeint? Hatte eigentlich auch mit dem gesamten Text geprüft, aber vielleicht ist mit den Anführungszeichen etwas falsch gelaufen.

Grüße von der Nordsee

Peter


jaenicke - Sa 07.12.13 02:09

Nein, es wird kein Teilstring geprüft. Wenn du das willst, musst du die Fenster alle durchgehen und selbst prüfen. Dafür gibt es Enumerationsfunktionen wie EnumWindows [http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497(v=vs.85).aspx].


Peter18 - Sa 07.12.13 02:10

Hallo,

es funktioniert jetzt mit "'Pegasus Mail - [Ordnerverwaltung - Neue Nachrichten (''Inbox'')]'"! warscheinlich hatte ich zuvor einen Fehler bei den Anführungszeichen. "Window Detective" war hilfreich, danke.

Grüße von der Nordsee

Peter