最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中winform實現自動觸發(fā)鼠標、鍵盤事件的方法

 更新時間:2014年08月20日 10:12:27   投稿:shichen2014  
這篇文章主要介紹了C#中winform實現自動觸發(fā)鼠標、鍵盤事件的方法,是C#程序設計中非常實用的功能,需要的朋友可以參考下

程序觸發(fā)鼠標、鍵盤事件是C#程序設計中比較常見的功能,本文實例展示了C#中winform實現自動觸發(fā)鼠標、鍵盤事件的方法,有不錯的實用價值。具體如下:

要想在C#程序中觸發(fā)鼠標、鍵盤事件就必須要調用windows函數。

一、鼠標事件的觸發(fā)

1.引用windows函數mouse_event

/// <summary>
/// 鼠標事件
/// </summary>
/// <param name="flags">事件類型</param>
/// <param name="dx">x坐標值(0~65535)</param>
/// <param name="dy">y坐標值(0~65535)</param>
/// <param name="data">滾動值(120一個單位)</param>
/// <param name="extraInfo">不支持</param>
[DllImport("user32.dll")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);

MouseEventFlag表示鼠標事件的類型,可取多個枚舉值組合。注意dx,dy參數,必須是絕對坐標(0,0)~(65535,65535)中的一點。

/// <summary>
/// 鼠標操作標志位集合
/// </summary>
[Flags]
enum MouseEventFlag : uint
{
/// <summary>
/// 鼠標移動事件
/// </summary>
Move = 0x0001,

/// <summary>
/// 鼠標左鍵按下事件
/// </summary>
LeftDown = 0x0002,
LeftUp = 0x0004,
RightDown = 0x0008,
RightUp = 0x0010,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
XDown = 0x0080,
XUp = 0x0100,
Wheel = 0x0800,
VirtualDesk = 0x4000,
/// <summary>
/// 設置鼠標坐標為絕對位置(dx,dy),否則為距離最后一次事件觸發(fā)的相對位置
/// </summary>
Absolute = 0x8000
}

2.調用mouse_event函數,觸發(fā)鼠標事件

/// <summary>
/// 觸發(fā)鼠標事件
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
private static void DoMouseClick(int x, int y)
{
  int dx = (int)((double)x / Screen.PrimaryScreen.Bounds.Width * 65535); //屏幕分辨率映射到0~65535(0xffff,即16位)之間
  int dy = (int)((double)y / Screen.PrimaryScreen.Bounds.Height * 0xffff); //轉換為double類型運算,否則值為0、1
  mouse_event(MouseEventFlag.Move | MouseEventFlag.LeftDown | MouseEventFlag.LeftUp | MouseEventFlag.Absolute, dx, dy, 0, new UIntPtr(0)); //點擊
}

二、鍵盤事件的觸發(fā)

1.引用windows函數keybd_event

/// <summary>
/// 鍵盤事件
/// </summary>
/// <param name="bVk"> virtual-key code</param>
/// <param name="bScan">hardware scan code</param>
/// <param name="dwFlags"> flags specifying various function options</param>
/// <param name="dwExtraInfo"> additional data associated with keystroke</param>
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

bvk為鍵值,例如回車13,bScan設置為0,dwFlags設置0表示按下,2表示抬起;dwExtraInfo也設置為0即可。

2.調用keybd_event函數,觸發(fā)鍵盤事件

下面的代碼演示觸發(fā)Ctrl+C組合鍵,執(zhí)行復制操作。

keybd_event((byte)Keys.ControlKey, 0, 0, 0);
keybd_event((byte)Keys.C, 0, 0, 0);
keybd_event((byte)Keys.ControlKey, 0, 2, 0);
keybd_event((byte)Keys.C, 0, 2, 0);

希望本文所述實例對大家的C#程序設計能起到一定的幫助作用。

相關文章

  • 淺析C#封裝GRPC類庫及調用簡單實例

    淺析C#封裝GRPC類庫及調用簡單實例

    這篇文章主要為大家詳細介紹了C#中封裝GRPC類庫及調用簡單實例的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • C#中的const和readonly關鍵字詳解

    C#中的const和readonly關鍵字詳解

    本文詳細講解了C#中的const和readonly關鍵字,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Unity Shader實現素描效果

    Unity Shader實現素描效果

    這篇文章主要為大家詳細介紹了Unity Shader實現素描效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#自定義事件及用法實例

    C#自定義事件及用法實例

    這篇文章主要介紹了C#自定義事件及用法,實例分析了C#中自定義事件的定義與使用技巧,需要的朋友可以參考下
    2015-05-05
  • C#使用WMI獲取硬盤參數的實現方法

    C#使用WMI獲取硬盤參數的實現方法

    因為需求需要涉及獲取硬盤的SN參數,但是又不想要獲取到U盤或移動硬盤設備的SN,所以就淺淺的研究了一下,本文給大家介紹了C#使用WMI獲取硬盤參數的實現方法,需要的朋友可以參考下
    2024-06-06
  • C#獲取存儲過程返回值和輸出參數值的方法

    C#獲取存儲過程返回值和輸出參數值的方法

    這篇文章主要介紹了C#獲取存儲過程返回值和輸出參數值的方法,有需要的朋友可以參考一下
    2014-01-01
  • C#遍歷刪除字符串中重復字符

    C#遍歷刪除字符串中重復字符

    這篇文章主要介紹了C#遍歷刪除字符串中重復字符的方法,涉及C#遍歷字符串的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 使用C#實現寫入系統(tǒng)日志

    使用C#實現寫入系統(tǒng)日志

    本文給大家分享的是作者使用使用C#實現將軟件日志寫入系統(tǒng)日志中的方法,十分巧妙,有需要的小伙伴可以參考下
    2018-01-01
  • winform基于異步委托實現多線程搖獎器

    winform基于異步委托實現多線程搖獎器

    這篇文章主要介紹了winform基于異步委托實現多線程搖獎器的方法,包含了線程的運用及隨機數的生成,需要的朋友可以參考下
    2014-10-10
  • C#實現Modbus通信的詳細教程(支持TCP和RTU)

    C#實現Modbus通信的詳細教程(支持TCP和RTU)

    Modbus 協議是一種廣泛應用于工業(yè)自動化中的通信協議,用于在設備之間進行數據交換,它基于主/從架構,并支持多種傳輸方式,如 Modbus TCP 和 Modbus RTU,在本文中,我們將使用 C# 編程語言和開源庫 NModbus,展示如何輕松實現 Modbus 通信,需要的朋友可以參考下
    2025-01-01

最新評論

兴文县| 贵溪市| 宁德市| 宿迁市| 光山县| 昌邑市| 巴东县| 徐汇区| 双江| 黔西| 开阳县| 长宁县| 曲周县| 剑阁县| 漳浦县| 洛浦县| 城市| 长垣县| 宿迁市| 崇左市| 昌邑市| 桂林市| 静乐县| 石首市| 环江| 兰考县| 柞水县| 金湖县| 鄄城县| 略阳县| 灵石县| 社旗县| 玛多县| 克什克腾旗| 莱州市| 墨竹工卡县| 阿拉善左旗| 寿宁县| 密山市| 安溪县| 敖汉旗|