后台程序控制鼠标所在窗口(未激活的)的滚轮滚动有关问题

后台程序控制鼠标所在窗口(未激活的)的滚轮滚动问题
本帖最后由 zhangpiu 于 2015-02-15 23:08:28 编辑
    是这样的,我想写个程序,有如下特性:
    (1)后台执行,无窗口
    (2)有托盘图标
    (3)程序启动后只执行一个任务:就是保证鼠标所在窗口(未激活的)的滚轮能够响应鼠标滚动

    我的思路是
    

      MSG msg;   
   while (GetMessage (&msg, NULL, 0, 0))   
   {   
   if (msg.message == WM_MOUSEWHEEL)   
   {
              POINT pos;   
       ::GetCursorPos (&pos);   
       HWND hwnd = ::WindowFromPoint (pos);
           WPARAM wParam = msg.wParam;
   LPARAM lParam = msg.lParam;
       ::SendMessage(hwnd, WM_MOUSEWHEEL, wParam, lParam);
   }
   }
    

    但这样只有在程序前台运行且有窗口时可以,请问想实现以上所描述的功能的程序,该如何实现?
------解决思路----------------------
这个消息貌似WINDOWS下只有活动窗口才能接收到吧?
用SetCapture试试,不然就是各种复杂HOOK了。
------解决思路----------------------
这个的使用 SetWindowsHookEx 创建老鼠hook,否则无法截取送到别的窗口的消息