110,534
社区成员
发帖
与我相关
我的任务
分享
public static void SendCombineKeyboardEvent(Keys Key1,Keys Key2, IntPtr windowHandler, int delay)
{
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
keybd_event((byte)Key1, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
keybd_event((byte)Key2, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
System.Threading.Thread.Sleep(delay);
keybd_event((byte)Key1, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
keybd_event((byte)Key2, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
}
main ()
{
SendCombineKeyboardEvent(Keys.LWin, Keys.R, hwnd, 30);
}
/// <summary>
/// 键盘事件
/// </summary>
/// <param name="bvk"></param>
/// <param name="bScan"></param>
/// <param name="dwFlags"> 0 为按下,2为释放</param>
/// <param name="dwExtraInfo">一般情况下设成为 0</param>
[DllImport("user32.dll")]
public extern static void keybd_event(byte bvk, byte bScan, int dwFlags, int dwExtraInfo);
//调用
keybd_event((byte)Keys.LWin, 0, 0, 0); //按下LWIN
keybd_event((byte)Keys.R, 0, 0, 0); //按下R
keybd_event((byte)Keys.LWin, 0, 2, 0); //释放LWIN
keybd_event((byte)Keys.R, 0, 2, 0); //释放R