starflag 2017-07-13 02:48 采纳率: 0%
浏览 828

求助 vs 和 vc 下 SendMessage 和 SetCursorPos 效果不同的问题

用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,与这个有关吗?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog
    • ¥15 Excel发现不可读取的内容