SendKeys 无法在活动应用程序之外发送密钥。
要真实地模拟整个系统的击键,您需要 P/Invokekeybd_event
or SendInput
out of user32.dll
。 (根据 MSDNSendInput
是“正确”的方式但是keybd_event
有效并且更易于 P/Invoke。)
示例(我think这些关键代码是正确的...每对中的第一个是VK_
代码,第二个是成败键盘扫描代码...“2”是KEYEVENTF_KEYUP
)
[DllImport("user32.dll")]
private static extern void keybd_event(byte bVk, byte bScan,
int dwFlags, int dwExtraInfo);
...
keybd_event(0xa2, 0x1d, 0, 0); // Press Left CTRL
keybd_event(0x7b, 0x58, 0, 0); // Press F12
keybd_event(0x7b, 0xd8, 2, 0); // Release F12
keybd_event(0xa2, 0x9d, 2, 0); // Release Left CTRL
另一种方法是在使用 SendKeys 之前激活您要发送到的应用程序。为此,您需要再次使用 P/Invoke 来查找应用程序的窗口并将其聚焦。