Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Hvatanje poruke kada dodje do promene aktivnog prozora

  • 2 odgovora
  • 3.771 pregleda

Najnovija ↓

Hvatanje poruke kada dodje do promene aktivnog prozora 03.02.2012. u 13:33 · pre 179 meseci
izmenjeno 1 put, poslednji put krle_zr 03.02.2012. u 13:54
  1. krle_zr03.02.2012. u 13:54zapis iz teksta poruke
#1
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.
Re: Hvatanje poruke kada dodje do promene aktivnog prozora 03.02.2012. u 15:31 · pre 179 meseci #2
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.
Sviđa mi se1
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme