我用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();
}
}
{
// 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();
}
}
SendMessage发送鼠标点击消息不可以吗?附有效果的函数:mouse_event (MOUSEEVENTF_MOVE|MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 316, 210, 0, 0 );三个FLAG分别实现移动/左键按下/左键松开 三个效果。
发到那个画图的窗口才行,具体用spy++查看HWND MBWindow;
MBWindow = ::FindWindow(NULL, _T("未命名 - 画图"));
HWND hPaint = ::FindWindowEx(MBWindow, NULL, _T(“MSPaintView”), NULL);
::SendMessage...
只是画图窗口没有标题,要怎么用SPY++查出哪个才是画图窗口的主题呢?