Hallo,
folgende timerprocedure soll mir sagen, wann ein fenster geschlossen wurde:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var first: boolean = true; var handleb: Thandle; procedure TForm2.Timer1Timer(Sender: TObject); var handlea: Thandle; var ha: Hwnd; var pwi: tagWINDOWINFO; begin
if first=true then begin handleb:= findwindow(nil,'Der quantenmechanische Doppelspaltversuch'); if handleb<>0 then begin first:= false; ha:= handleb; end; end; if getwindowinfo(ha,pwi)= false then showmessage('geschlossen'); end; |
Die Idee is folgende. Zu anfang wird das handle des fensters gesucht und dann nichtmehr verändert, sobald es einen konkreten wert erhalten hat. Dies passiert, indem first auf false gesetzt wird.
Dann wird mit getinfo nur noch überprüft, ob das handle noch gültig ist oder nicht.
Leider liefert getinfo immer gleichzeitig true und false!! D.h. egal ob ich mache
if getwindowinfo(ha,pwi)=false then ... oder
Delphi-Quelltext
1:
| if getwindowinfo/ha,pwi)=true then... |
es erscheint immer die showmessage botschaft im timerintervall. Außerdem spielt es überhaupt keine rolle, ob das fenster geschlossen wurde oder nicht...
Wäre dankbar für jede hilfe
stefan