我想hook Windows消息来准确判断当前工作窗口发生了切换,无论是鼠标,键盘还是
某个程序引起的,各位谈谈自己的理解,讨论个结果出来?

解决方案 »

  1.   

    这个并能保证它成为工作窗口,如果它是在最小化的情况下active的,好像只能闪烁几下,无法恢复程normal的窗口吧。不知道对不对。
      

  2.   

    你说的这种情况是可以判断出来的:WM_ACTIVATE 
    fActive = LOWORD(wParam);           // activation flag 
    fMinimized = (BOOL) HIWORD(wParam); // minimized flag 
    hwndPrevious = (HWND) lParam;       // window handle 
     
    Parameters
    fActive 
    Value of the low-order word of wParam. Specifies whether the window is being activated or deactivated. This parameter can be one of the following values. Value Meaning WA_ACTIVE Activated by some method other than a mouse click (for example, by a call to the SetActiveWindow function or by use of the keyboard interface to select the window). 
    WA_CLICKACTIVE Activated by a mouse click. 
    WA_INACTIVE Deactivated. 
    fMinimized 
    Value of the high-order word of wParam. Specifies the minimized state of the window being activated or deactivated. A nonzero value indicates the window is minimized. hwndPrevious 
    Value of lParam. Handle to the window being activated or deactivated, depending on the value of the fActive parameter. If the value of fActive is WA_INACTIVE, hwndPrevious is the handle to the window being activated. If the value of fActive is WA_ACTIVE or WA_CLICKACTIVE, hwndPrevious is the handle to the window being deactivated. This handle can be NULL. 另外还有两个相关消息:
    WM_MOUSEACTIVE 和 WM_NCACTIVE
      

  3.   

    感谢wanglei888(阿笨猫) !
    我改用其他办法来处理了,没再找需要hook那些消息才能知道工作窗口切换了。还是很感谢!