用sendmessage 发送鼠标消息
void CLlkDlg::OnButton3()
{
// TODO: Add your control notification handler code here
int x=22,y=187;
HWND hwnd=::FindWindow(NULL,TEXT("QQ游戏 - 连连看角色版"));
int lparam;
lparam=(y<<16)+x+31*2;//表示指定格
::SendMessage(hwnd,WM_LBUTTONDOWN,0,lparam);//
::SendMessage(hwnd,WM_LBUTTONUP,0,lparam); //
}
上段代码用vc6.0编译有效果 用vs2013没有效果,对应棋子没有被点击
调试,vc和vs下 hwnd 相同 说明 findwindow没问题
也对lparam试了很多不同的值 ,在vs下都没有效果,
vs下 sendmessage 返回值为0 也正常返回了,但是始终没有点击效果
但是下段代码在vs下却能正常运行
{
HWND hwnd2=::FindWindow(NULL, L"新建文本文档 (2).txt - 记事本");
HWND hedit = ::FindWindowExA(hwnd2, NULL, "Edit", NULL);
::SendMessage(hedit, WM_CHAR, 'S', 0);
::SendMessageA(hedit, WM_LBUTTONDOWN, 0, lparam);
::SendMessageA(hedit, WM_LBUTTONUP, 0, lparam);
}
还有一个问题是GetCursorPos 和 SetCursorPos这两个函数
在vc下编译 光标的位置 与 spy++获取的值相吻合(右下角大概是1400,XXx左右,这个忘记了)
在vs下编译 光标的位置 与 电脑的分辨率相吻合(右下角为1920,1080,但是即使更改电脑分辨率,右下角依然 是 1920,1080)
这个是什么原因,会不会导致在不同的电脑上使用,无法达到预期效果?
另外上面的函数 看了下 都在WinUser.h中,vc使用的是vc的WinUser.h, vs使用的是系统的WinUser.h,与这个有关吗?