[ zrnvltc @ 31.01.2010. 09:25 ] @
Pozdrav svima.
Imam problem kada klijent pritisne "windows"
dugme koje je default pored 'ctrl' dugmeta u prvom donjem redu
na tastaturi. Naravno izgubi se fokus aplikacije u kojoj radi,
i klijent vise ne moze da unosi nista, a da sam toga naravno
nije ni svestan. Da li postoji odredjeni 'trik' da to sprecim.
Odnosno da onemogucim da se kada pritisne to dugme
fokus prebaci sa aplikacije na windows u pozadini ?

Pozdrav
[ savkic @ 01.02.2010. 13:12 ] @
> Imam problem kada klijent pritisne "windows" dugme koje je default pored 'ctrl' dugmeta u prvom donjem redu
> na tastaturi. Naravno izgubi se fokus aplikacije u kojoj radi, i klijent vise ne moze da unosi nista, a da sam toga naravno
> nije ni svestan. Da li postoji odredjeni 'trik' da to sprecim.

Čim se ponovo vrati u program (npr Alt + Tab) dobiće i fokus, a ako želiš da potpuno sprečiš izlazak iz tvog programa, možeš ga postaviti kao shell (umesto explorera) ili kada stigne WM_ACTIVATEAPP za deaktivaciju, možeš ponovo forsirati vraćanje tvog programa na vrh. Evo Delphi primera za to, verujem da ćeš se snaći jer je u pitanju čist WinApi.

Code:


procedure ActivateApplication;
var
  ActiveThreadId, CurrentThreadId: DWORD;
begin
  if GetForegroundWindow <> Application.Handle then
  begin
    ActiveThreadId := GetWindowThreadProcessId(GetForegroundWindow, nil);
    CurrentThreadId := GetCurrentThreadId;
    AttachThreadInput(CurrentThreadId, ActiveThreadId, True);
    SetForegroundWindow(Application.Handle);
    AttachThreadInput(CurrentThreadId, ActiveThreadId, False);
    BringWindowToTop(Application.Handle);
  end;
end;