当前位置: 首页 > 编程语言 > C#

发送鼠标和键盘事件分享

时间:2023-04-11 10:52:19 C#

发送鼠标和键盘事件我正在开发一个应用程序,它必须向活动窗口发送一些键或鼠标事件。我正在使用这个类:鼠标usingSystem.Runtime.InteropServices;使用System.Windows.Forms;namespaceMouse{publicstaticclassVirtualMouse{//导入必要的API函数,以便.NET可以//适当地编组参数[DllImport("user32.dll")]staticexternvoidmouse_event(intdwFlags,intdx,intdy,intdwData,intdwExtraInfo);//mouse_input()API函数的常量privateconstintMOUSEEVENTF_MOVE=0x0001;privateconstintMOUSEEVENTF_LEFTDOWN=0x0002;私有常量MOUSEEVENTF_LEFTUP=0x0004;privateconstintMOUSEEVENTF_RIGHTDOWN=0x0008;privateconstintMOUSEEVENTF_RIGHTUP=0x0010;privateconstintMOUSEEVENTF_MIDDLEDOWN=0x0020;privateconstintMOUSEEVENTF_MIDDLEUP=0x0040;privateconstintMOUSEEVENTF_ABSOLUTE=0x8000;//模拟鼠标的移动。参数指定相对位置的变化。正值表示移动//向右或向下publicstaticvoidMove(intxDelta,intyDelta){mouse_event(MOUSEEVENTF_MOVE,xDelta,yDelta,0,0);}//模拟鼠标的移动。参数指定//绝对位置,左上角为//原点publicstaticvoidMoveTo(intx,inty){mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,x,y,0,0);}//在当前位置模拟鼠标左键的点击和释放动作//按钮publicstaticvoidLeftClick(){mouse_event(MOUSEEVENTF_LEFTDOWN,Control.MousePosition.X,Control.MousePosition.Y,0,0);mouse_event(MOUSEEVENTF_LEFTUP,Control.MousePosition.X,Control.MousePosition.Y,0,0);}publicstaticvoidRightClick(){mouse_event(MOUSEEVENTF_RIGHTDOWN,Control.MousePosition.X,Control.MousePosition.Y,0,0);mouse_event(MOUSEEVENTF_RIGHTUP,Control.MousePosition.X,Control.MousePosition.Y,0,0);}}}键盘使用System.Runtime.InteropServices;使用System.Windows.Forms;命名空间鼠标{publicstaticclassVirtualKeyboard{[DllImport("user32.dll")]staticexternuintkeybd_event(bytebVk,bytebScan,intdwFlags,intdwExtraInfo);publicstaticvoidKeyDown(System.Windows.Forms.Keyskey){keybd_event((byte)key,0,0,0);}publicstaticvoidKeyUp(System.Windows.Forms.Keyskey){keybd_event((byte)key,0,0x7F,0);}}}这是我的测试代码:privatevoidbutton1_Click(objectsender,EventArgse){Thread.Sleep(2000);VirtualMouse.Move(100,100);VirtualMouse.RightClick();VirtualKeyboard.KeyDown(System.Windows.Forms.Keys.A);VirtualKeyboard.KeyUp(System.Windows.Forms.Keys.A);}鼠标移动,但不发送点击任何想法?如何保持按键一段时间?我尝试在KeyDown和KeyUp之间使用thread.sleep但它没有用。有一个在CodePlex项目(Microsoft的开源站点)上开源Windows输入模拟器(C#SendInputWrapper-模拟键盘和鼠标)http://inputsimulator.codeplex.com/它有示例并且非常简单。你的定义应该是Uint32:以上就是C#学习教程:发送鼠标键盘事件分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——privateconstUInt32MOUSEEVENTF_LEFTDOWN=0x02;privateconstUInt32MOUSEEVENTF_ABSOLUTE=0x8000;privateconstUInt32MOUSEEVENTF_LEFTUP=0x04;privateconstUInt32MOUSEEVENTF_RIGHTDOWN=0x08;privateconstUInt32MOUSEEVENTF_RIGHTUP=0x08;如需转载请注明出处: