作者Noora (牧羊人)
看板C_and_CPP
标题[问题] sendmessage 模拟滑鼠在背景下点击
时间Mon Oct 12 21:33:29 2015
开发平台(Platform): vc++ 2015
程式码(Code):
HWND Find = FindWindow(NULL, WindowName);
SendMessage(Find, WM_LBUTTONDOWN, (WPARAM)MK_LBUTTON, (LPARAM)MAKELPARAM(x,
y));
Sleep(250);
SendMessage(Find, WM_LBUTTONUP, (WPARAM)MK_LBUTTON, (LPARAM)MAKELPARAM(x,
y));
Sleep(2000);
SendMessage(Find, WM_LBUTTONDOWN, (WPARAM)MK_LBUTTON, (LPARAM)MAKELPARAM(x,
y));
Sleep(250);
SendMessage(Find, WM_LBUTTONUP, (WPARAM)MK_LBUTTON, (LPARAM)MAKELPARAM(x,
y));
补充说明(Supplement):
抓到window後我让程式去执行在fb网页下
点击左上角fb的图样更新网页,每次程式
自动点击第一下的时候window还不会自动弹出来
过两秒Sleep(2000)後,再点击一次window就会自动从背景跳出来,请问大大们
程式哪里出问题了呢??
想让网页自动一直在背景执行我想要传送的点击按键就好了,可是window都会在
执行点击第二下之後每点击一次就跳出视窗一次
感激 Q_Q
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.176.130.205
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1444656812.A.C7C.html
1F:推 schizophrena: 这是callback的预设动作啊... 点击後会跳到最前面 10/12 22:19
2F:→ schizophrena: 抱歉 我没看清楚 @_@ 10/12 22:21
3F:→ schizophrena: 既然跟sleep时间有关 何不试试多少以下不会跳出来 10/12 22:22
4F:→ schizophrena: 可能比较好抓原因 10/12 22:22
有测过Sleep十秒後再点击,结果还是一样..
※ 编辑: Noora (180.176.130.205), 10/12/2015 22:28:47
5F:推 stupid0319: 正常用滑鼠去点的视窗都会跑到最上层吧 10/12 22:46
用Sendmessage的方式不会像mouse_event那样游标被抢走,也有看过有人
做出不会跑到最上层的方式点击滑鼠..
※ 编辑: Noora (180.176.130.205), 10/12/2015 22:53:42
6F:推 stupid0319: 也许SetForegroundWindow,这个function要弄掉 10/12 22:55
没有使用这个function喔
※ 编辑: Noora (210.69.13.1), 10/13/2015 08:30:58
7F:推 stupid0319: call LockSetForegroundWindow ,也许有用 10/13 13:26
好像有点改善,不过在视窗转换的时候他还是会再跳出来一次
EX:我在Skype底下还不会跳出来,转到pcman底下又跳出来了这样的感觉
在此感谢大大的协助
※ 编辑: Noora (180.176.130.205), 10/13/2015 20:17:50
※ 编辑: Noora (180.176.130.205), 10/13/2015 20:24:41
※ 编辑: Noora (180.176.130.205), 10/13/2015 20:36:06
8F:推 stupid0319: 不是你的程式call喔,是chrome来call才有用吧 10/13 21:07
9F:→ stupid0319: 如果是fb网页在pcman,要pcman call LockSetForeground 10/13 21:08
大大您好 我是直接在点击之前加上LockSetForegroundWindow(LSFW_LOCK);
不太懂其他的参数要怎麽加
在用LockSetForegroundWindow(LSFW_LOCK);前
有先加上SetForegroundWindow(Find);指令
这麽做就可以定住了
另外我又试了另一个指令
SendMessage(Find, WM_KEYDOWN, VK_F5, NULL);
SendMessage(Find, WM_KEYUP, VK_F5, NULL);
想说直接按下F5让他直接按下F5更新网页
可是就变成window要置顶才会动作...
只要让window在背景就不会动作了,但滑鼠却可以背景执行..
感谢回答 ><
※ 编辑: Noora (180.176.130.205), 10/13/2015 22:58:48
※ 编辑: Noora (180.176.130.205), 10/13/2015 23:00:21
10F:推 stupid0319: 远程执行绪可以控制别的程式 10/13 23:38