Как программно нажать кнопку Windows с помощью C # SendKeys - PullRequest
8 голосов
/ 17 сентября 2009

В основном я хочу смоделировать в коде пользователя, нажимающего на кнопку Windows. Я знаю, что есть SendKeys, который позволяет мне отправлять нажатия клавиш в окна, если я получаю дескриптор, но я не могу понять, что мне нужно, чтобы получить дескриптор для отправки команд кнопки Windows. Например. Кнопка Windows + L. Немного прочитав это, кажется, что CTRL-ESC должен также всплыть в меню «Пуск», но не уверен, как сказать ему отправить ключи в Windows (если это даже возможно). Любая помощь будет высоко ценится.

Ура!

Ответы [ 3 ]

9 голосов
/ 17 сентября 2009

Я не думаю, что вы можете сделать это с помощью SendKeys, вместо этого вам потребуется p / invoke для функции API, вероятно keybd_event для отправки либо CTRL + ESC, либо ключа Windows.

Здесь является примером открытия меню «Пуск» таким образом в VB, а здесь - это keybd_event с его сигнатурой C # на pinvoke.net.

5 голосов
/ 27 сентября 2009

Некоторые из действий, которые пользователь будет выполнять с помощью ярлыка WinKey, могут быть выполнены программно другими способами. Чтобы взять пример WinKey + L, вместо этого вы можете просто использовать следующий оператор:

Process.Start("rundll32.exe", "user32.dll,LockWorkStation");

Если бы вы могли уточнить, что именно вы пытаетесь выполнить, возможно, есть лучший способ, чем keybd_event (как предложил Дейл).

0 голосов
/ 17 сентября 2009

Вам нужно использовать глобальную клавиатуру, чтобы подключить клавиатуру за пределами вашего приложения. Есть статья о том, как это сделать здесь .

...