首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 模擬滑鼠操作全攻略:移動、單擊、雙擊、右鍵與 mouse_event 參數詳解

     編輯:Delphi

API 基礎

  • SetCursorPos(X, Y):將游標移至螢幕絕對座標。
  • mouse_event(dwFlags, dx, dy, dwData, dwExtraInfo):注入滑鼠事件。
    • MOUSEEVENTF_MOVE:相對移動(dx,dy 為相對量)。
    • MOUSEEVENTF_LEFTDOWN / LEFTUP:左鍵按下/釋放。
    • MOUSEEVENTF_RIGHTDOWN / RIGHTUP:右鍵按下/釋放。
    • MOUSEEVENTF_WHEEL:滾輪(dwData 為滾動量)。
    • MOUSEEVENTF_ABSOLUTE:配合 dx,dy 為 0~65535 正規化絕對座標。

四大基本操作封裝

procedure MouseMoveTo(X, Y: Integer);
begin
  SetCursorPos(X, Y);
end;

procedure MouseLeftClick(X, Y: Integer);
begin
  SetCursorPos(X, Y);
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP,   0, 0, 0, 0);
end;

procedure MouseLeftDblClick(X, Y: Integer);
begin
  MouseLeftClick(X, Y);
  Sleep(50); // 間隔略大於系統雙擊速度設定
  MouseLeftClick(X, Y);
end;

procedure MouseRightClick(X, Y: Integer);
begin
  SetCursorPos(X, Y);
  mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
  mouse_event(MOUSEEVENTF_RIGHTUP,   0, 0, 0, 0);
end;

完整表單範例

unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm)
  btnMove, btnLClick, btnLDClick, btnRClick: TButton;
  procedure btnMoveClick(Sender: TObject);
  procedure btnLClickClick(Sender: TObject);
  procedure btnLDClickClick(Sender: TObject);
  procedure btnRClickClick(Sender: TObject);
end;
var Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.btnMoveClick(Sender: TObject);
begin mouse_event(MOUSEEVENTF_MOVE, 100, 100, 0, 0); end;
procedure TForm1.btnLClickClick(Sender: TObject);
begin MouseLeftClick(10, 10); end;
procedure TForm1.btnLDClickClick(Sender: TObject);
begin MouseLeftDblClick(200, 200); end;
procedure TForm1.btnRClickClick(Sender: TObject);
begin MouseRightClick(200, 200); end;
end.

執行畫面

設計介面 運行畫面

應用場景與風險

場景說明
遠端桌面/控制軟體本端注入事件傳送至遠端重放
自動化測試模擬使用者操作驗證 UI 流程
遊戲外掛/腳本自動掛機、自動瞄準(違反使用條款,風險極高)
惡意軟體竊取點擊、繞過 UAC、駭客工具常用手法

防禦偵測

  • 系統層:WH_MOUSE_LL 低層鉤子監控注入事件(LLMHF_INJECTED 標誌)。
  • 應用層:檢測 GetAsyncKeyState 與實體輸入不一致、統計點擊間隔分佈(機器操作過於規律)。
  • UAC 安全桌面:提權提示畫面在隔離桌面,無法被普通進程 mouse_event 穿透。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved