Entwickler-Ecke

Windows API - schließung eines fensters mitbekommen


nepleurepas - Sa 05.04.08 22:18
Titel: schließung eines fensters mitbekommen
Hallo,
auch auf die gefahr hin gesteinigt zu werden weil es das thema schon tausendmal gab, ich hab grad nur n modem und ewiges suchen damit macht ech kein spass...

also meine frage. Mein programm soll merken, wenn ein Fenster eines anderen, fremden Programmes geschlossen wird.
Nur den Prozess/Thread? zu beobachten dürfte nich reichen, da wenn das fenster des fremden programmes geschlossen wird, öffnet das fremde programm ein neues fenster mit gleichem titel.
Aber ich muss trotzdem mitbekommen, wann dieser "fensterwechel" vonstatten geht. Hoff mal ihr versteht mich.

Gruß Stefan


crncpz - Sa 17.05.08 09:06

ich habe das mal über die PID gemacht gehabt.
war nicht gerade elegant aber funktioniert.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
function processexists(pid:dword):boolean;
var h : thandle;
    pe : tprocessentry32;
    erg : boolean;
begin
  h := createtoolhelp32snapshot(th32cs_snapprocess,0);
  pe.dwSize := sizeof(pe);
  erg:=false;
  if process32first(h,pe) then
  repeat
    if pe.th32ProcessID = pid then
    begin
      erg:=true;
      break
    end
  until (not process32next(h,pe))or(erg=true);
  closehandle(h);
  processexists:=erg;
end;

zuvor musst du nur noch die PID vom Programm bestimmen.


Wotan89 - Di 20.05.08 14:50

Dies würde doch nur den Wechsel des Prozesses wahrnehmen, aber es geht doch um das Fenster. Wenn ein neues Fenster geöffnet wird, hat dies auch ein Handle (HWND). Mit FindWindow() erhälst du das Handle des Fensters, und sobald sich das Fenster schließt und ein neues gestartet wird, hat das neue Fenster zwar den gleichen Namen, aber ein anderes Handle.