Конференция "WinAPI" » Активация без захвата фокуса клавиатуры
 
  • Psycho © (28.12.08 18:15) [0]
    Пытаюсь заставить окно не забирать у других фокус клавиатуры при активации. Когда окно показывается самостоятельно, без участия пользователя, фокус захватывается лишь в каком-то определённом случае (по-моему, при первом показе окна после сворачивания в трей), но хочется и от этого избавиться. Ну и под это дело можно бы сделать, чтобы даже при клике фокус не забирало. Пробую через хуки (проба пера в этом деле, так что наверно что-то не так делаю - что-то не получается). Как поправить следующий код, чтобы заработало?

       OldWndProc, NewWndProc: Pointer;
       procedure HookForm;
       procedure UnhookForm;
       procedure HookFormProc(var Msg: TMessage);
    ...

    procedure TForm11.HookFormProc(var Msg: TMessage);
    begin
     if msg.Msg<>WM_SETFOCUS then
       Msg.Result := CallWindowProc(OldWndProc, Form11.Handle,
                     Msg.Msg, Msg.wParam, Msg.lParam);
    end;

    procedure TForm11.HookForm;
    begin
     OldWndProc := Pointer(GetWindowLong(Form11.Handle, GWL_WNDPROC));
     NewWndProc := Classes.MakeObjectInstance(HookFormProc);
     SetWindowLong(Form11.Handle, GWL_WNDPROC, LongInt(NewWndProc));
    end;



    Delphi 2007, Windows Vista
  • Psycho © (31.12.08 12:41) [1]
    всё, решил весьма уникальным способом (в смысле только для этой программы)
 
Конференция "WinAPI" » Активация без захвата фокуса клавиатуры
Есть новые Нет новых   [134435   +35][b:0][p:0.001]