Конференция "WinAPI" » Хук на мышь + PostMessage
 
  • estra (29.03.15 01:35) [0]
    Всем привет.

    Столкнулся с проблемой. Есть хук на мышь, который отлавливает сообщение WM_MOUSEHWHEEL. Если я нажимаю колесо на мыши, то хук срабатывает и ловит это сообщение, все нормально. Но возникла необходимость программно послать это сообщение окну (потоку), но хук его почему то не перехватывает. Помогите решить проблему.

    var
     MouseHook: HHOOK;

    function CallMouseHook( Code: Integer; wParam: wParam; lParam: lParam ): LongInt; stdcall;
    begin
      case wParam of
         WM_MOUSEHWHEEL: ShowMessage( '' );
      end;
      Result := CallNextHookEx( MouseHook, Code, wParam, lParam );
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      MouseHook := SetWindowsHookEx( WH_MOUSE, @CallMouseHook, 0, GetCurrentThreadID );
    end;

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if MouseHook > 0 then
      begin
         UnHookWindowsHookEx( MouseHook );
         MouseHook := 0;
      end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      // Так не работает
      PostMessage( Handle, WM_MOUSEHWHEEL, 0, 0 );
      // И так не работает
      PostThreadMessage( GetCurrentThreadID, WM_MOUSEHWHEEL, 0, 0 );
    end;

    На значения параметров LParam и WParam внимания не обращайте, сейчас главное чтобы хук перехватил сообщение, посланное программно.
  • Rouse_ © (29.03.15 13:04) [1]
    SendMessage
  • estra (29.03.15 14:43) [2]
    Это первое, что я попробовал, но увы не работает, как не работает и метод Preform.
  • brother © (29.03.15 14:52) [3]
    попробуйте отправить WM_MOUSEHWHEEL в wParam
  • estra (29.03.15 15:09) [4]
    Так?
    SendMessage( Handle, WM_MOUSEHWHEEL, WM_MOUSEHWHEEL, 0 );

    не работает...
  • brother © (29.03.15 15:48) [5]
    при работающем WM_MOUSEHWHEEL Code какой?
  • estra (29.03.15 15:51) [6]
    3 (HC_NOREMOVE)
 
Конференция "WinAPI" » Хук на мышь + PostMessage
Есть новые Нет новых   [134427   +34][b:0][p:0]