当前位置:C++技术网 > 资讯 > vc ++ 控制响应窗口外的鼠标移动点击 代码

vc ++ 控制响应窗口外的鼠标移动点击 代码

更新时间:2017-04-16 13:56:16浏览次数:1+次

你好,我用VC写了个程序打开一个网站,然后移动鼠标点上面的链接,但我用的mouse_event()函数不能响应窗口外的点击事件,改怎么处理?下面是我的代码:  hkleb7sd 2017/4/15 18:09:59 ShellExecute(NULL, _T("open"), _T("IExplore.exe"), _T("http://www.baidu.com"), NULL, SW_SHOW);     CPoint point; GetCursorPos(&point); SetCursorPos(1008, 200); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, NULL); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, NULL);

C++技术网会员解答:

    您好,感谢您的C++技术网的支持与信任。

    您的实现代码如下:

ShellExecute(NULL, _T("open"), _T("IExplore.exe"), _T("http://www.cjjjs.com"), NULL, SW_SHOWMAXIMIZED);
CPoint point;
GetCursorPos(&point);
SetCursorPos(905, 129);
Sleep(4000);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, NULL);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, NULL);
     我使用C++技术网测试了一下,效果如下:

vc ++ 控制响应窗口外的鼠标移动点击 代码

    以上是执行的效果。

    和你代码的唯一区别就是多加了一句代码和修改了窗口初始大小。您得不到您需要的效果,问题不在于功能逻辑。因为这些代码全都不是阻塞式的。而使用ShellExecute启动浏览器,并加载网页的数据,直到最后显示完网页,是需要一定的时间的。而在这个时间内,后续的模拟单击时间已经发生了。当浏览器的内容还没有显示的时候,发生了单击时间,是没有任何效果的,网页是即时执行单击命令的。当内容再显示的时候,没有单击效果了。

    所以,我就加一个Sleep函数,等待网页加载完毕,再执行后面的模拟单击,就可以了。