麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C#/winform 自動觸發鼠標、鍵盤事件

2019-11-17 02:57:54
字體:
來源:轉載
供稿:網友

C#/winform 自動觸發鼠標、鍵盤事件

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

一、鼠標事件的觸發

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),否則為距離最后一次事件觸發的相對位置        /// </summary>        Absolute = 0x8000    }

2.調用mouse_event函數,觸發鼠標事件

  /// <summary>        /// 觸發鼠標事件        /// </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)); //點擊        }

二、鍵盤事件的觸發

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函數,觸發鍵盤事件

下面的代碼演示觸發Ctrl+C組合鍵,執行復制操作。

            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);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 热久久91 | 久久人人av | 综合精品 | 成人短视频在线观看 | 国产无限资源在线观看 | 欧美精品a∨在线观看不卡 午夜精品影院 | 精品国产一区二区三区四区阿崩 | 久久久久久久久久一本门道91 | 久久精品一区二区三区不卡牛牛 | 国产午夜精品一区二区三区视频 | 日本高清com | 国产高潮失禁喷水爽到抽搐视频 | 久久手机在线视频 | 黄色片网站免费在线观看 | 精品国产一区二区三区四区在线 | 欧美一级美国一级 | 久久精品一二三区 | 国产一级午夜 | 宅男视频在线观看免费 | 毛片视频免费观看 | 亚洲网站在线观看视频 | 成人午夜免费网站 | 爱高潮www亚洲精品 国产精品一区自拍 | 99欧美视频| 国产精品久久久久久久久久尿 | 欧美成人国产va精品日本一级 | 欧美91看片特黄aaaa | 久草视频福利在线观看 | 一区二区免费看 | 欧美性受ⅹ╳╳╳黑人a性爽 | 宅男噜噜噜66一区二区 | 99精品视频在线免费观看 | 亚洲综合网站 | 黄色羞羞| 在线看国产视频 | 一级大黄毛片 | 亚洲片在线 | 羞羞视频一区二区 | 日本网站一区 | av在线电影网站 | 精品一区视频 |