C# 模擬鍵盤滑鼠控制電腦

滑鼠模擬

指定一個螢幕像素的座標位置
int x = 1255;
int y = 161;
Cursor.Position = new Point(x, y);
ClassMouse.LeftClick();    //按下滑鼠左鍵


鍵盤模擬

官方文件的範例是用小算盤程式,計算111*11=

public class demo
{
    [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
    public static extern IntPtr FindWindow(string lpClassName,
        string lpWindowName);

    // Activate an application window.
    [DllImport("USER32.DLL")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);

    // Send a series of key presses to the Calculator application.
    public static void Calculator()
    {
        // Get a handle to the Calculator application. The window class
        // and window name were obtained using the Spy++ tool.
        IntPtr calculatorHandle = FindWindow("ApplicationFrameWindow", "小算盤");

        // Verify that Calculator is a running process.
        if (calculatorHandle == IntPtr.Zero)
        {
            MessageBox.Show("Calculator is not running.");
            return;
        }

        // Make Calculator the foreground application and send it 
        // a set of calculations.
        SetForegroundWindow(calculatorHandle);
        
        SendKeys.SendWait("111");
        SendKeys.SendWait("*");
        SendKeys.SendWait("11");
        SendKeys.SendWait("=");
    }

    //以下是關閉hangouts 視訊通話視窗
    public static void findHangoutsWindow()
    {
        //取得視訊通話視窗
        IntPtr HangoutsHandle = FindWindow(null, "Hangouts 視訊通話 - Google Chrome");

        //判斷視窗是否存在
        if (HangoutsHandle == IntPtr.Zero)
        {   
            return;
        }
        SetForegroundWindow(HangoutsHandle);
        Thread.Sleep(1000);
        SendKeys.SendWait("^w");      //關閉視窗快捷鍵是ctrl+w

        //等待視窗關閉完成
        while (HangoutsHandle != IntPtr.Zero) {
            Thread.Sleep(1000);
            HangoutsHandle = FindWindow(null, "Hangouts 視訊通話 - Google Chrome");
        }
    }
}

鍵盤指令表

官方資料
加號 (+)、 插入號 (^)、 百分比符號 (%)、 波狀符號 (~) 和括號 () 有特殊意義 SendKeys 
Key
程式碼
退格鍵
{BACKSPACE}, {BS}, or {BKSP}
中斷
{BREAK}
CAPS LOCK
{CAPSLOCK}
DEL 或刪除
{DELETE} 或 {DEL}
向下鍵
{DOWN}
END
{END}
Enter
{ENTER} 或 ~
ESC
{ESC}
說明
{HELP}
首頁
{HOME}
插入鍵
{INSERT} 或 {INS}
向左鍵
{LEFT}
NUM LOCK 鍵
{NUMLOCK}
PAGE DOWN
{PGDN}
PAGE UP
{PGUP}
PRINT SCREEN 鍵
{PRTSC}(保留供日後使用)
向右鍵
{RIGHT}
捲動鎖定
{SCROLLLOCK}
TAB
{TAB}
向上鍵
{UP}
F1
{F1}
F2
{F2}
F3
{F3}
F4
{F4}
F5
{F5}
F6
{F6}
F7
{F7}
F8
{F8}
F9
{F9}
F10
{F10}
F11
{F11}
F12
{F12}
F13
{F13}
F14
{F14}
F15
{F15}
F16
{F16}
加入數字鍵台
{ADD}
減去數字鍵台
{SUBTRACT}
相乘的數字鍵台
{MULTIPLY}
數字鍵台除以
{DIVIDE}
若要指定索引鍵加上任意組合的 SHIFT、 CTRL 和 ALT 鍵,在之前的按鍵碼的其中一個或多個下列程式碼。
Key
程式碼
SHIFT 鍵
+
CTRL
^
ALT 鍵
%
若要指定的任何組合的 SHIFT、 CTRL 和 alt 鍵應該按住時按下幾個其他索引鍵,以括號括住這些機碼的程式碼。 例如,若要指定 E 和 C 按下時按住 shift 鍵,使用"+ (EC) 」。 若要指定按住 shift 鍵,E 是按下,後面接著 C shift 鍵,不使用"+ EC"。

其他組合
public static void demo()
{
    //工作管理員
    SendKeys.SendWait("^+{ESC}");
    SendKeys.SendWait("^%{DELETE}");
    //可以加括號代表一起做,雖然shift、ctrl、alt功能鍵本身就帶有一起按的動作
    SendKeys.SendWait("^(%{DELETE})");

    //關閉程式
    SendKeys.Send("%{F4}");

    //連續按鍵 按 ← 五次
    SendKeys.SendWait("{left 5}");
    
}


參考自:
microsoft官方:https://msdn.microsoft.com/zh-tw/library/ms171548(v=vs.110).aspx
https://msdn.microsoft.com/zh-tw/library/system.windows.forms.sendkeys.send(v=vs.110).aspx

留言

這個網誌中的熱門文章

android 定時通知(永久長期的) 本篇只講AlarmManager使用

python nn 聲音辨識 -1 傅立葉轉換

python pyautogui 簡介

raspberrypi 開機自動執行程式 與 在terminal開啟第二個terminal執行python