要向一个最小化的窗口发送鼠标消息...HWND hWnd = ::FindWindow( NULL, "TMD" );
if( !hWnd )
    return FALSE;POINT pt;
pt.x = xxx;
pt.y = xxx;
::ScreenToClient( hWnd, &pt );
::PostMessage( hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG( pt.x, pt.y ) );
Sleep( 10 );
::PostMessage( hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELONG( pt.x, pt.y ) );
Sleep( 1000 );窗口句柄已经获得,窗口最大化时运行良好的,但当最小化到工具栏时就没了反应了.
奇怪的是,发送键盘按键却ms可以在最小化时也能发送.哪位大大能够帮帮忙,看看有啥办法发送鼠标消息给最小化的窗口!!

解决方案 »

  1.   

    最小化后窗口及内部控件的坐标都已经不在屏幕上了,鼠标消息不能正常响应。发鼠标消息的目的是什么?应该直接向窗口或控件发相应的命令或通知等消息。例如模拟点击按钮,就向按钮发送BM_CLINK消息或者向其父窗口发BN_CLICKED通知。
      

  2.   

    发送WM_SHOWWINDOW  ,SW_MINIMIZE
      

  3.   

    麻烦的是用spy++也看不到那个"按钮"的信息,也不知道它的父窗口的句柄,只知道程序窗口的句柄.我看过别人的autoit的code,它是:
    DllCall("user32.dll", "int", "SendMessage", _
            "hwnd", WinGetHandle($Window), _
            "int", $WM_MOUSEMOVE, _
            "int", 0, _
            "long", _MakeLong($X, $Y))
    然后就是:
    WM_LBUTTONDOWN/WM_LBUTTONUP,貌似也只是调用SendMessage而已,但却能在最小化的时候运行良好.btw:假如不是向一个按钮click,而是在空白地方click(例如walk), 那恐怕就不用发送鼠标消息了(直接放弃)??
    还有啥办法?help~~~