首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 模擬滑鼠操作:SetCursorPos 與 mouse_event 完整範例

     編輯:關於C#

.NET Framework 本身不提供直接控制滑鼠游標位置或模擬點擊的 API,但可透過 P/Invoke 呼叫 Windows user32.dll 實現。

核心 API 宣告

using System;
using System.Runtime.InteropServices;

public static class MouseSimulator
{
    // 設定游標絕對座標 (螢幕左上角為 0,0)
    [DllImport("user32.dll")]
    public static extern bool SetCursorPos(int X, int Y);

    // 模擬滑鼠事件 (移動、點擊、滾輪等)
    [DllImport("user32.dll")]
    public static extern void mouse_event(
        MouseEventFlags flags, int dx, int dy, uint data, UIntPtr extraInfo);

    // 事件旗標列舉
    [Flags]
    public enum MouseEventFlags : uint
    {
        Move = 0x0001,
        LeftDown = 0x0002,
        LeftUp = 0x0004,
        RightDown = 0x0008,
        RightUp = 0x0010,
        MiddleDown = 0x0020,
        MiddleUp = 0x0040,
        XDown = 0x0080,
        XUp = 0x0100,
        Wheel = 0x0800,
        VirtualDesk = 0x4000, // 針對多螢幕虛擬桌面座標
        Absolute = 0x8000     // dx/dy 為絕對座標 (0~65535 對應螢幕寬高)
    }
}

常用操作範例

1. 移動滑鼠到指定位置

// 絕對座標移動
MouseSimulator.SetCursorPos(500, 300);

2. 模擬左鍵單擊

MouseSimulator.mouse_event(
    MouseSimulator.MouseEventFlags.LeftDown | MouseSimulator.MouseEventFlags.LeftUp,
    0, 0, 0, UIntPtr.Zero);

3. 模擬右鍵單擊

MouseSimulator.mouse_event(
    MouseSimulator.MouseEventFlags.RightDown | MouseSimulator.MouseEventFlags.RightUp,
    0, 0, 0, UIntPtr.Zero);

4. 模擬滾輪向上/向下

// 向上滾動 (data 為 120 的倍數)
MouseSimulator.mouse_event(
    MouseSimulator.MouseEventFlags.Wheel, 0, 0, 120, UIntPtr.Zero);

// 向下滾動
MouseSimulator.mouse_event(
    MouseSimulator.MouseEventFlags.Wheel, 0, 0, (uint)(-120), UIntPtr.Zero);

5. 相對座標移動

// 向右移動 100 像素,向下移動 50 像素
MouseSimulator.mouse_event(
    MouseSimulator.MouseEventFlags.Move, 100, 50, 0, UIntPtr.Zero);

6. 絕對座標移動 (搭配 Absolute 旗標)

// dx, dy 範圍 0~65535 對應螢幕解析度
MouseSimulator.mouse_event(
    MouseSimulator.MouseEventFlags.Move | MouseSimulator.MouseEventFlags.Absolute,
    32767, 32767, 0, UIntPtr.Zero); // 螢幕中心

應用場景

  • 自動化測試腳本(UI 自動化)
  • 巨集錄製/回放工具
  • 操作示範 Demo 程式
  • 無障礙輔助工具

注意事項

  • 需參考 System.Runtime.InteropServices
  • 部分安全性軟體可能攔截模擬輸入
  • UAC 提權視窗等安全桌面環境下無法模擬輸入
  • 多螢幕環境座標計算需考慮虛擬桌面範圍

詳細參數說明請參閱 MSDN SetCursorPos 與 mouse_event 文件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved