Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Hvatanje poruke kada dodje do promene aktivnog prozora

[es] :: Pascal / Delphi / Kylix :: Hvatanje poruke kada dodje do promene aktivnog prozora

[ Pregleda: 2711 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

krle_zr

Član broj: 96307
Poruke: 258
79.101.107.*



+7 Profil

icon Hvatanje poruke kada dodje do promene aktivnog prozora03.02.2012. u 12:33 - pre 148 meseci
Hocu da napravim aplikaciju koja bi belezila nazive aktivnih prozora. Hocu da presretnem Windows poruku kada dodje do promene aktivnog prozora.
Znam da bih mogao isto da uradim i sa Timer komponentom (da okida svakih 5 sekundi i vraca mi naziv aktivnog prozora) ali mi se cini elegantnije ako uhvatim poruku i zatim logujem naziv prozora. Gledao sam poruke WM_ACTIVATE i WM_MOUSEACTIVATE i koristio bih funkciju GetForegroundWindow.

Pozdrav

EDIT: Izvinjavam se ako nisam dovoljno jasan, mislio sam na promenu bilo kojeg prozora u Windows-u. Znaci kada korisnik klikne na drugi prozor, predpostavljam da se salje neka poruka sistemu.

[Ovu poruku je menjao krle_zr dana 03.02.2012. u 13:54 GMT+1]
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Hvatanje poruke kada dodje do promene aktivnog prozora03.02.2012. u 14:31 - pre 148 meseci
Otprilike ovako:

Code:

interface

TForm1 = class
...
end;

implementation

var
  formPointer : TForm1;

procedure WinProc(hWinEventHook: THandle; event: DWORD; hwnd: HWND; idObject, idChild: Longint; idEventThread, dwmsEventTime: DWORD); stdcall;
var
  winTitle : Array[0..MAX_PATH - 1] of Char;
begin
  GetWindowText(hwnd, winTitle, MAX_PATH);
  formPointer.Memo.Lines.Add(StrPas(winTitle));
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  hndHook : THandle;
begin
  formPointer := self;
  hndHook := SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, 0, WinProc, 0, 0, WINEVENT_OUTOFCONTEXT);
end;


S' tim sto u callback funkciji ne mozes da pristupas direktno klasi, vec moras da sacuvas pointer ka njoj u nekoj promenljivoj van te klase, u ovom slucaju formPointer.
 
Odgovor na temu

krle_zr

Član broj: 96307
Poruke: 258
79.101.107.*



+7 Profil

icon Re: Hvatanje poruke kada dodje do promene aktivnog prozora04.02.2012. u 06:39 - pre 148 meseci
Hvala reiser, to je ono sto mi treba. Ja sam uspeo da preko poruke WM_ACTIVATE saznam kako su forme (u mojoj aplikaciji) aktivirane ali ne na globalnom nivou.

Hvala jos jednom
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Hvatanje poruke kada dodje do promene aktivnog prozora

[ Pregleda: 2711 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.