如何从当前的.NET表单/应用程序发送Keys F12

我很确定以下按钮激活的表单代码应该在我的C#应用​​程序中引发Control-F12: 的SendKeys( “^ {F12}”); 但它似乎没有继续到Windows shell并激活另一个正在监听它的程序。我的键盘确实有效。似乎sendkeys在某个地方被截获,而不是以实际模拟击键的方式发送。有帮助吗?     
已邀请:
SendKeys无法在活动应用程序之外发送密钥。 要真正真实地模拟全系统击键,你需要P / InvInvѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭѭ (根据MSDN
SendInput
是“正确的”方式但是
keybd_event
工作并且对P / Invoke更简单。) 示例(我认为这些关键代码是正确的...每对中的第一个是
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来查找应用程序的窗口并将其聚焦。     

要回复问题请先登录注册