sendmessage 向非顶端窗口发送信息
问题描述:
以前写了一些爬虫爬数据,需要发送按键。但是当时写的单线程,网页一直处于顶端,很顺利的发过去了。现在老板要求改成多线程的,也就是同时打开好几个网页。试了下sendmessage发送按键。结果不行。必须先用SetForegroundWindow激活窗口,获得焦点。才可以发送成功。
搜下百度上面,有说第二个参数给245,有说给258的。但是试了下都不行。
哪位大神有办法?
代码原型: SendMessage(hwnd, 256, VK_B, 0);
答
windows的消息机制你没有办法改变,但是要实现多个爬虫模拟按键,你完全可以有变通的办法,就是使用虚拟桌面/多会话。
比如说你可以放在windows server上运行你的程序,开很多个用户,用windows远程桌面连自己的计算机,以不同的用户登录。
然后你写一个主控程序,通过rpc/pipe/网络和你的不同的桌面上的爬虫交互,各自独立按键。
答
当前窗口没有在顶端,消息处理不了,这里你可以其他地方都是多线程,只有按键的地方,一个一个窗口轮流激活,然后发送消息来处理好了