2013-07-21 3 views
1

Способ SendKeys.Send не позволяет нажать клавишу Fn, которая существует на клавиатурах ноутбука. Как я могу имитировать нажатие этой клавиши с C#?Как имитировать нажатие Fn + F6?

+5

Я совершенно уверен, что вы не можете. Я считаю, что ключ 'fn' поддерживается аппаратным обеспечением. – Scott

ответ

3

Вы не можете, и вам не нужно. Клавиша Fn существует только в качестве ключа в отношении схемы клавиатуры.

Когда код ключа отправляется в операционную систему, он выглядит так, как если бы функциональные клавиши были обычными ключами, как на обычной клавиатуре. Операционная система даже не знает, что существует ключ Fn, который берет на себя специальная клавиатура в ноутбуке.

Чтобы клавиша функциональности нажала на ноутбук, просто отправьте обычный ключевой код для функциональной клавиши, как на обычной клавиатуре.

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

1

Я никогда не пробовал, но я думаю, вы можете сделать это по-другому. Создайте событие keydown на textbox и нажмите fn ключ во время выполнения, а затем проверьте, что code или что keyValue оно возвращается. Затем используйте это value в вашем методе SendKeys.Send.

+0

И когда KeyDown даже не стреляет? –

+0

Я пробовал это и e.KeyCode == 255. Если попытаться получить код проверки с помощью C++-интерфейса, то сканирующий код - 113. Я попытался отправить этот код сканирования через SendInput (WinAPI), но ничего не происходит ... –

Смежные вопросы