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++技术网测试了一下,效果如下:
以上是执行的效果。
和你代码的唯一区别就是多加了一句代码和修改了窗口初始大小。您得不到您需要的效果,问题不在于功能逻辑。因为这些代码全都不是阻塞式的。而使用ShellExecute启动浏览器,并加载网页的数据,直到最后显示完网页,是需要一定的时间的。而在这个时间内,后续的模拟单击时间已经发生了。当浏览器的内容还没有显示的时候,发生了单击时间,是没有任何效果的,网页是即时执行单击命令的。当内容再显示的时候,没有单击效果了。
所以,我就加一个Sleep函数,等待网页加载完毕,再执行后面的模拟单击,就可以了。