在不把窗口设置成当前窗口的条件下,对窗口进行操作。

来源:互联网 发布:特丽魅彩 知乎 编辑:程序博客网 时间:2024/05/16 10:14

做外挂的第一步,就是模拟键盘鼠标的操作。模拟很简单,但要在不抢鼠,不与键盘冲突,不影响用户其他操作的条件下模拟对我来说就困难了。 

以下问题都以一含有确定按钮和一文本框的程序为例:

解决思路:

1:不抢鼠,不与键盘冲突:

我用SendMessage(HWND hWnd,                     //要操作的句柄

                                   UINT iMessage,                 //消息代码

                                   WPARAM wParam,            //字参数,内容有具体消息决定。

                                  LPARAM lParam                  //长参数,内容有具体消息决定。       );

来模拟鼠标和键盘的操作。

2:不影响用户其他操作:

就是在非当前窗口环境下让窗口接受消息。

1:把所有消息直接发给窗口处理。消息代码为WM_COMMAND,字参数内容付值为控件的ID。

WM_COMMAND wNotifyCode = HIWORD(wParam);
  wID = LOWORD(wParam);
  hwndCtl = (HWND) lParam;
wNotifyCode
Value of the high-order word of wParam. Specifies the notification code if the message is from a control. If the message is from an accelerator, this parameter is 1. If the message is from a menu, this parameter is 0.
wID
Value of the low-order word of wParam. Specifies the identifier of the menu item, control, or accelerator.
hwndCtl
Handle to the control sending the message if the message is from a control. Otherwise, this parameter is NULL.

2:直接对要操作的对象发送消息,这种情况要激活他的父窗口,用SetActiveWindow()实现。但是SetActiveWindow()是个只对本进程内窗口可用的函数,要对其他窗口起作用就要配合AttachThreadInput()使用。

有点累,不太适合对屏幕写东西,呵呵。先到这吧,一会补充。

原创粉丝点击