使用SendMessage发送鼠标点击事件,为何需要发送两次
HWND hand_game = FindWindow(NULL,TEXT("测试文件"));
HWND hand_button = FindWindowEx(hand_game,NULL,TEXT("Button"),TEXT("点击"));//得到按钮的句柄
SendMessage(hand_button,WM_LBUTTONDOWN,0,MAKELPARAM(46,12));
SendMessage(hand_button,WM_LBUTTONUP,0,MAKELPARAM(46,12));
上述代码是实现发送的程序中的一个按钮的响应代码,点击这个发送按钮后,发现测试程序中的按钮得到了焦点,但是为弹出MessageBox……再次点击发送消息的程序中的按钮,这次测试程序弹出了MessageBox,经测试发下,只有两次单击发送消息,或者将代码改成下面的样子:
HWND hand_game = FindWindow(NULL,TEXT("测试文件"));
HWND hand_button = FindWindowEx(hand_game,NULL,TEXT("Button"),TEXT("点击"));//得到按钮的句柄
SendMessage(hand_button,WM_LBUTTONDOWN,0,MAKELPARAM(46,12));
SendMessage(hand_button,WM_LBUTTONUP,0,MAKELPARAM(46,12));
//发送两次:
SendMessage(hand_button,WM_LBUTTONDOWN,0,MAKELPARAM(46,12));
SendMessage(hand_button,WM_LBUTTONUP,0,MAKELPARAM(46,12));
才能正常弹出MessageBox……用SPY++监视按钮得到的消息,发现结果都是正常的……小弟十分不解,望高手解释下!
平台:Visual C++6.0 Windows 7 Ultimate
相关推荐
c# 在WebBrowser中用SendMessage模拟鼠标点击
想在WebBrowser控件里面模拟鼠标点击,在百度上找了半天,怎么也找不到,还是google强大,在一个国外网站上找到的,代码比较清楚了,不做说明。
vb net 使用 sendMessage 如何输入鼠标坐标?
🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!
C#中使用SendMessage
在C#中,程序采用了的驱动采用了事件驱动而不是原来的消息驱动,虽然.net框架提供的事件已经十分丰富,但是在以前的系统中定义了丰富的消息对系统的编程提供了方便的实现方法,因此在C#中使用消息有时候还是大大提高编程的效率的。 1 定义消息 在c#中消息需要定义成windows系统中的原始的16进制数字,比如 const int WM_Lbutton = 0x201; //定义了鼠标的左键点击消息 public const int USER = 0x0400 // 是windows系统定义的用户消息 2 消息发送 消息发送是通过windows提供的API函数SendMessage来实现
SendMessage之模拟按键
SendMessage之模拟按键,组合键,vb键盘模拟必不可少。
Delphi 模拟点击鼠标左键、右键和发送消息.rar
Delphi 模拟按键,将虚拟键转换为扫描码,模拟鼠标右键和左键以及发送消息的功能,Shift和Ctrl都定义了特殊的功能,一个简单的键盘鼠标模拟程序,适合Delphi初学者。比如模拟点击鼠标左键,具体的代码编写为: begin pt:= edit1.ClientToScreen( Point( 4,4 )); SetCursorPos( pt.x, pt.y ); mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 ); mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ); mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 ); mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ); end; 还有模拟右键和发送消息等,请下载本源码详细查看。


