Yonathan1111 Ответов: 4

Как я могу нажать обе функциональные клавиши (fn) и f11 одновременно, используя метод sendkeys?


Или, как насчет этого, отправить код ключа (ASCII) вместо самого ключа?


Привет Всем,

Как я могу нажать одновременно функциональную клавишу (fn) и f11, используя метод sendkeys?

Я пытался вот так:
var WshShell = new ActiveXObject("WScript.Shell");
                WshShell.AppActivate(this);
                WshShell.SendKeys("FN{F11}");


но это не работает.

Помоги мне,

Спасибо

Manfred Rudolf Bihy

Чего вы пытаетесь достичь? Почему бы не просто WshShell.SendKeys ("{F11}");

Toniyo Jackson

На самом деле в некоторых ноутбуках есть клавиша Fn. Я думаю, он говорит об этом.

4 Ответов

Рейтинг:
31

Toniyo Jackson

Sendkeys может работать только с ключами, известными и обрабатываемыми windows. В
в большинстве случаев ключ FN имеет дело непосредственно с аппаратным обеспечением, а не через
о/С.

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

Проверить это ссылка[^].


OriginalGriff

Звучит примерно так! Меня опередил :)

Sergey Alexandrovich Kryukov

Нет, в них нет абсолютно ничего особенного.
Я только что проверил свой Fn. If производит странную комбинацию клавиш (Left|OemClear), но это "нормальный" ключ, обрабатываемый как WM_KEYUP, WM_KEYDOWN.
--СА
Пожалуйста, посмотрите мой ответ.
--СА

Рейтинг:
2

DRAGAOcc

Привет,

Решение заключается в следующем:

Фирт) Чанда-де-правильность формы (windowsforms) "стартовую позицию" ручное;
Второй) Использовать этот код:

this.Location = Screen.AllScreens[1].WorkingArea.Location;



Этот индекс представляет собой число экрана. Например, "0" - это основной экран windows. Помните: Windows 10 реализует любые экраны.


Richard Deeming

Этот вопрос был задан, на него ответили, и он был решен. ПЯТЬ ЛЕТ НАЗАД.

Кроме того, ваше "решение" не имеет абсолютно никакого отношения к вопросу.

Рейтинг:
14

Sergey Alexandrovich Kryukov

Функциональность SendKey очень ограниченный. За полностью достоверное моделирование входных данных вы должны использовать P/Invoke для для API-интерфейса Windows SendInput.

В этом нет ничего особенного Fn, но он может быть нестандартным (возможно, в зависимости от аппаратного обеспечения, я не уверен). Это обрабатывается как WM_KEYUP, WM_KEYDOWN как и любой другой ключ.

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

—СА


Richard MacCutchan

Очень интересно, но спрашивающий хочет использовать Sendkeys() функция отправки ключевого сообщения. Аппаратная операция в данном случае не имеет значения, о чем свидетельствует страница MSDN, на которую я ссылался.

Sergey Alexandrovich Kryukov

Я согласен с вашим ответом в той части, где вы говорите, что OP не нужно использовать SendKeys.
И я согласен, что аппаратная работа не имеет значения, ну и что?
Я думаю, что мы не знаем цели операции, но идея, безусловно, ошибочна.
Видите ли, на моей клавиатуре Fn + F11 ничего не значит, но на другом ноутбуке это может быть значительно. Просто неправильный подход.

Richard MacCutchan

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

Sergey Alexandrovich Kryukov

Ну, их можно отправить через SendInput, конечно (это очень близкая имитация аппаратной клавиатуры), но что толку?

Спасибо за обсуждение.
--СА

Рейтинг:
0

Richard MacCutchan

Вам не нужно отправлять "Fn"; это просто аппаратная функция клавиатуры ноутбука. Все что вам нужно это правильная строка для рассматриваемого ключа как описано выше здесь[^].


Manfred Rudolf Bihy

Ровно 5+!

Sergey Alexandrovich Kryukov

Нет! Я только что проверил свой Fn. If производит странную комбинацию клавиш (Left|OemClear), но это "нормальный" ключ, обрабатываемый как WM_KEYUP, WM_KEYDOWN.
Пожалуйста, посмотрите мой ответ.
--СА