当前位置:编程学习 > C#/ASP.NET >>

C#怎样添加一快捷键向计算器发送鼠标点击消息?

--------------------编程问答-------------------- ........汗颜~~~思路不清晰你

 获得计算器的句柄,然后向这个句柄发送msg~~~不要发送什么鼠标点击的消息~~~

发送鼠标的坐标可以设置msg里的参数(LParam) --------------------编程问答-------------------- 鼠标点击的消息不就是 0x201 ,0x202么?

                    PostMessage(hwndProc, 0x203, 1, 0x005c0253);
//                   System.Threading.Thread.Sleep(1000);   //这句加上也不行
                    PostMessage(hwndProc, 0x202, 0, 0x005c0253);

消息发送了,但是貌似是因为响应太快没有触发
在画图里测试,消失没发出去。在魔兽里测试,点不了技能。 --------------------编程问答-------------------- 上面打错了,是


                    PostMessage(hwndProc, 0x201, 1, 0x005c0253);
//                   System.Threading.Thread.Sleep(1000);   //这句加上也不行
                    PostMessage(hwndProc, 0x202, 0, 0x005c0253);
--------------------编程问答-------------------- http://topic.csdn.net/u/20100405/20/449eedfb-46c0-45e9-9bd9-f75cf2c1c49f.html

http://www.cnblogs.com/rawman/archive/2009/02/21/1395508.html  --------------------编程问答-------------------- To xingyuebuyu

<00003> 0009039E P WM_LBUTTONDOWN fwKeys:MK_LBUTTON xPos:599 yPos:357
<00004> 0009039E P WM_LBUTTONUP fwKeys:0000 xPos:599 yPos:357

我的消息已经发送成功,但是因为间隔原因或是什么原因没有产生点击的效果。
消息是有效果的。以魔兽争霸3为例
如果用右键点击则产生移动效果。左键单击建筑之类也有反应。
但是模拟点击物品或技能一类的东西就不行,貌似是按下时间太短(我猜的,不清楚原因)

但我用 System.Threading.Thread.Sleep(1000);   //这句加上也不行
继续求助。3Q --------------------编程问答-------------------- 你比较下手动点击和程序模拟时的抓取到的信息有什么区别啊?

后台发送时你要确定句柄是对的才可以,魔兽争霸3可能是要前台的.
你试试直接发快捷键看是否有效果? --------------------编程问答-------------------- [code]SendMessage(hwndProc, 0x100, 0x46, 0);
                        SendMessage(hwndProc, 0x101, 0x46, 0);
                        [/code]
这样不行... --------------------编程问答--------------------
                        SendMessage(hwndProc, 0x100, 0x46, 0);
                        SendMessage(hwndProc, 0x101, 0x46, 0);
                        
--------------------编程问答-------------------- 顶一下.

引用 6 楼 xingyuebuyu 的回复:
你比较下手动点击和程序模拟时的抓取到的信息有什么区别啊?

后台发送时你要确定句柄是对的才可以,魔兽争霸3可能是要前台的.
你试试直接发快捷键看是否有效果?


比较了下没有区别,都是WM_LBUTTONDOWN WM_LBUTTONUP
应该是不需要前台的.发送右击移动是有效果的. --------------------编程问答--------------------

g_hWnd = FindWindow(NULL,_T("计算器"));
if(g_hWnd <= 0 ) return;
//HWND hWnd = FindWindowEx(g_hWnd,0,NULL,_T("2"));
//SetForegroundWindow(g_hWnd);
if(hWnd > 0)
{
PostMessage(g_hWnd,WM_CHAR,0x32,NULL);
PostMessage(g_hWnd,WM_CHAR,0x32,NULL);
PostMessage(g_hWnd,WM_CHAR,0x35,NULL);

PostMessage(g_hWnd,WM_CHAR,0x32,NULL);
PostMessage(g_hWnd,WM_CHAR,0x35,NULL);
PostMessage(g_hWnd,WM_CHAR,0x30,NULL);

}

如果想后台输入,就注释掉SetForegroundWindow(g_hWnd);如果想把窗体置前显示,就打开这句话。 --------------------编程问答-------------------- 魔兽估计没戏吧?
很多游戏是有专门防外挂设计的 --------------------编程问答--------------------
引用 11 楼 jianuman 的回复:
魔兽估计没戏吧?
很多游戏是有专门防外挂设计的


Warcraft or WOW

这两个都不会屏蔽系统级别的Hook。我都试过。 --------------------编程问答-------------------- 我靠,走进一个火影忍者地盘
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,