在不把視窗設定成當前視窗的條件下,對視窗進行操作。

plumecold發表於2006-06-29

做外掛的第一步,就是模擬鍵盤滑鼠的操作。模擬很簡單,但要在不搶鼠,不與鍵盤衝突,不影響使用者其他操作的條件下模擬對我來說就困難了。 

以下問題都以一含有確定按鈕和一文字框的程式為例:

解決思路:

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()使用。

有點累,不太適合對螢幕寫東西,呵呵。先到這吧,一會補充。

相關文章