WinMain()函数收到消息后,使用DispatchMessage()函数将消息派发给了窗口过程,从而由窗口过程对消息进行处理。
0x03 模拟鼠标键盘按键的操作鼠标、键盘常用的信息中, WM_MOUSEMOVE对应移动鼠标光标,按下鼠标左键为WM_LBUTTONDOWN,释放鼠标左键为WM_LBUTTONUP,鼠标消息如下:
键盘的按下与抬起消息也有定义,分别是WM_KEYDOWN和WM_KEYUP。常用的为:
PostMessage()函数可以对键盘按键进行模拟,目标编程界面为:
开始按钮事件的代码如下:
在按钮事件中添加定时器,按照指定的时间间隔进行相应的处理:
获取标题可以通过Spy++获得。通过PostMessage()发送按F5就可以完成键盘按键模拟的程序,此函数的好处是目标程序可以在后台,不需要窗口处于激活状态。
通过API函数也可以模拟鼠标键盘按键的操作。keybd_event()、mouse_enevt()可以分别模拟键盘和鼠标的输入,定义如下:
模拟界面为:
首先将目标窗口设置到最前面并处于激活状态的部分,代码如下:
在代码的使用中,SetForegroundWindow()函数将指定的窗口设置到最前面并处于激活状态,唯一的参数是目标窗口的窗口句柄。
模拟键盘按钮:
模拟鼠标:
其中用到的ClientToScreen()函数的作用时得到指定窗口在屏幕中的坐标位置,SetCursorPos()将鼠标移动到指定的坐标位置。
0x04 通过消息实现进程间的通信系统消息分为两种,已经定义的消息是由0到0x3ff,用户自定义的消息可以从0x400开始,系统提供了一个宏WM_USER,在进行自定义消息是,在其基础上加一个值就可以。
进程间通信需要有发送端和接受端: