SendMessage()鼠标软模拟

摘要:
//软鼠标模拟:优点是您不会真正移动鼠标开始按钮坐标x=386y=387SendMessage(hookHwnd,messages.WM_LBUTTONDOWN,0,$0180017A)//按下鼠标左键发送消息(hookWwnd,message s.WM_LPUTTONUP,0,$018017A)//抬起鼠标左键//硬件模拟:鼠标将真正移动_事件(MOUSEEVE
//鼠标软模拟:好处就是不会真的移动鼠标  开始按钮 坐标 x=386y=387 
SendMessage(hookHwnd,messages.WM_LBUTTONDOWN ,0,$0180017A); //按下鼠标左键
SendMessage(hookHwnd,messages.WM_LBUTTONUP  ,0, $0180017A); //抬起鼠标左键
//硬件模拟:会真的移动鼠标
mouse_event(MOUSEEVENTF_LEFTDOWN,X ,Y ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,X ,Y ,0,0); 

函数功能  

  该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。

     函数原型

  LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)   

参数:

  hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。

  Msg:指定被发送的消息。

  wParam:指定附加的消息特定信息。

  IParam:指定附加的消息特定信息。

  返回值:返回值指定消息处理的结果,依赖于所发送的消息。

  备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。

  如果指定的窗口是由正在调用的线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。

  Windows CE:Windows CE不支持Windows桌面平台支持的所有消息。使用SendMesssge之前,要检查发送的消息是否被支持。

  速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。

  SendMessage函数使用实例

  程序控制拉下或收起组合框的下拉列来

  一般情况下,为了拉下或收起组合框的下拉列表,需要用键盘或鼠标进行操作,而有时我们希望程序运行的某个时刻自动拉出下拉列表(比如在一些演示程序中),为了实现这个目的,我们也只有借助于SendMessage函数,方法是发一个CB_SHOWDROPDOWN(&H14F)消息给组合框。

  在发CB_SHOWDROPDOWN消息时,wParam参数决定了是拉下列表(=True时)还是收起列表(=False时),lParam无用(设为0)

转载自:http://www.cnblogs.com/ahroot/archive/2011/10/31/2230649.html

免责声明:文章转载自《SendMessage()鼠标软模拟》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.Net Core3.0 WebApi 三:读取appsettings.jsoniOS学习——输入验证码界面封装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

asyncio之Coroutines,Tasks and Future

asyncio之Coroutines,Tasks and Future Coroutines and Tasks属于High-level APIs,也就是高级层的api。 本节概述用于协程和任务的高级异步api。 Coroutines Coroutines翻译过来意思是协程, 使用async/await语法声明的协程是编写asyncio应用程序的首选方法。...

C#多线程(一)

一、基本概念 1、进程 首先打开任务管理器,查看当前运行的进程: 从任务管理器里面可以看到当前所有正在运行的进程。那么究竟什么是进程呢? 进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程...

android2.2 watchdog分析

1 watchdog分析 Watchdog就是“看门狗”。其最初存在的意义是因为以前嵌入式设备上的程序经常跑飞(电磁干扰之类的),所以专门设置了一个硬件看门狗,每个一段时间,看门狗就去检查一下某个参数是否被设置了,如果发现该参数没有被设置,则判断为系统出错,然后就会强制重启。 在软件层面上,Android对Systemserver的参数是否被设置也很谨慎,...

多核时代,还在使用任务管理器来看程序的性能吗?

是否为了一个程序只占用了13%的CPU利用率而沾沾自喜呢? 别忘了现在是多核时代,四核,超线程的i7. 单个线程最多只能占到12.5%的CPU利用率。 忘记这个简单的CPU利用率吧,多核时代,你需要具体知道到每个线程的利用率。 这篇博客,来源一个刚刚遇到的问题。 背景是我们正在针对Windows Media Player开发一些东西,具体是什么不重要。...

【转】JMeter学习(三十二)属性和变量

一、Jmeter中的属性: 1、JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2、JMeter属性在测试脚本的任何地方都是可见的(全局),通常被用来定义一些JMeter使用的默认值,可以用于在线程间传递信息。 3、JMeter属性可以在测试计划中通过函数 _P 进行引用,但是不能作为特定线程的变量值...

Python3的threading模块 lock、Rlock的使用

Python3的threading模块 lock、Rlock的使用 一、概述 在使用多线程的应用下,如何保证线程安全,以及线程之间的同步,或者访问共享变量等问题是十分棘手的问题,也是使用多线程下面临的问题,如果处理不好,会带来较严重的后果,使用python多线程中提供Lock 、Rlock 、Semaphore 、Event 、Condition 用来保证...