我用SendMessage函数向XP自带的画图程序发送的鼠标点击再松开这两个消息,但是实际上没有效果(画笔没有画上点),我上网查了些资料但总没有解决问题,希望大家帮我一下。这是一个MFC程序,模拟鼠标点击功能的实现代码放在按下OK按键的响应函数中,关键代码如下:void CMy2Dlg::OnOK() 
{
// TODO: Add extra validation here
GetDlgItem(IDC_STATIC1)->SetWindowText("正在检测中……"); HWND MBWindow;
MBWindow = FindWindowEx(NULL,NULL,NULL,"未命名 - 画图");
if(MBWindow==NULL)
{
GetDlgItem(IDC_STATIC1)->SetWindowText("没有检测到画图程序。");
}
else
{
GetDlgItem(IDC_STATIC1)->SetWindowText("恭喜!已检测到画图程序。");
//::SendMessage(MBWindow,WM_SYSCOMMAND,SC_MINIMIZE,0); //这个使用的话效果,现在注释掉了
SetCursorPos(316,210);
//   按下   
                  ::SendMessage(MBWindow,WM_NCLBUTTONDOWN,MK_LBUTTON,MAKELPARAM(316,210));   
Sleep(100);
                  //   抬起   
                  ::SendMessage(MBWindow,WM_NCLBUTTONUP,MK_LBUTTON,MAKELPARAM(316,210));
         //CDialog::OnOK();
}
}

解决方案 »

  1.   

    ::SendMessage(MBWindow,WM_NCLBUTTONDOWN,MK_LBUTTON,MAKELPARAM(316,210));//用WM_LBUTTONDOWN试试
      

  2.   

    改过后试了,还是没效果。其实我现始用的是WM_LBUTTONDOWN,后来改成WM_NCLBUTTONDOWN,把坐标改成(0,0)做测试用的,发贴的时候没及时改正,不好意思!
      

  3.   

    我用下面这个函数可以实现点击的效果,但是不知道为什么上面的方法不行。
    SendMessage发送鼠标点击消息不可以吗?附有效果的函数:mouse_event (MOUSEEVENTF_MOVE|MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 316, 210, 0, 0 );三个FLAG分别实现移动/左键按下/左键松开 三个效果。
      

  4.   

    你发消息到主界面没用的啊,
    发到那个画图的窗口才行,具体用spy++查看HWND MBWindow;
    MBWindow = ::FindWindow(NULL, _T("未命名 - 画图"));
    HWND hPaint = ::FindWindowEx(MBWindow, NULL, _T(“MSPaintView”), NULL);
    ::SendMessage...
      

  5.   

    多谢!应该是这个问题了。
    只是画图窗口没有标题,要怎么用SPY++查出哪个才是画图窗口的主题呢?