使用Windows API向指定窗口发送模拟鼠标及键盘消息

  之前做过类似于远程桌面的功能,当时也用到了Windows API,只不过当时是针对全局的,适用于整个系统,用的是mouse_event。最近要做一个控制某个特定窗口的功能,需要将一些鼠标和键盘控制消息映射到对应的窗口上,再用这个就不行了。之后查了下,应该是可以用SendMessage或者PostMessage来做的,但使用的过程中遇到了一些问题,解决之后记录下来给有需要的同学参考。
  其实使用这两个函数并不复杂,具体用法可参考MSDN上的说明,但使用过程中还是碰到了一些问题,首先是虽然消息发送了,但目标窗口没有响应,刚开始是以为自己发送的消息有问题,所以一直在修改,但目标窗口仍然无法收到消息。之后查了网上的资料,说是管理员权限的问题,于是用Spy++监测了这个窗口的消息日志,发现发送的时候确实什么也没收到,试了下用管理员权限启动程序,再发送消息就有响应了。这个针对不同的目标窗口可能不太一样,所以使用的时候还是要看实际的情况。
  然后就是参数的问题,由于之前对Windows API了解的不多,所以走了些弯路。函数的语法是这样的:

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

  hWnd就不多说了,网上有很多如何查找的方法,Msg也容易,但是wParam和lParam这两个参数在网上看到大家都不怎么提,可能觉得太简单了。后来也是查了

你可能感兴趣的:(Windows,API)