C# 如何使用win api发送密钥组合?

C# 如何使用win api发送密钥组合?,c#,winapi,C#,Winapi,如何使用win api发送密钥组合 例如,CTRL+A或CTRL+SHIFT+I [DllImport("user32.dll")] public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam); const UInt32 WM_KEYDOWN = 0x0100; const UInt32 WM_UP = 0x0101; const int key_ctrl = 0xA2; const

如何使用win api发送密钥组合

例如,CTRL+A或CTRL+SHIFT+I

[DllImport("user32.dll")]
public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
const UInt32 WM_KEYDOWN = 0x0100;
const UInt32 WM_UP = 0x0101;
const int key_ctrl = 0xA2;
const int key_a = 0x41;

PostMessage(hWnd, WM_KEYDOWN, key_ctrl, 0);
PostMessage(hWnd, WM_KEYDOWN, key_a, 0);
PostMessage(hWnd, WM_UP, key_a, 0);
PostMessage(hWnd, WM_UP, key_ctrl, 0);

UI自动化非常适合,谢谢

[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

SetForegroundWindow(hWnd);
SendKeys.SendWait("^+{i}")

自从Windows Vista以来,开发人员就不应该依靠
PostMessage
向另一个进程发送按键。请考虑使用微软UI自动化。相反,你可以使用,或者更好的是,@mic:与Windows Vista无关。这一直不可靠。SetForegroundWindow或SendWait是UI自动化的一部分。。。焦点可以在两次呼叫之间切换,您可以将键发送到另一个窗口。