SendKeys не может отправлять ключи за пределы активного приложения.
Чтобы действительно и действительно имитировать нажатие клавиш в масштабе всей системы, вам нужно P / Invoke либо keybd_event
, либо SendInput
из user32.dll
. (Согласно MSDN SendInput
является «правильным» способом, но keybd_event
работает и проще для P / Invoke.)
Пример (я думаю эти коды клавиш правильные ... первый в каждой паре - это код VK_
, а второй - код сканирования клавиатуры для создания или разрыва ... the "2 "is 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, чтобы найти окно приложения и сфокусировать его.