Рейтинг:
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.
Пожалуйста, посмотрите мой ответ.
--СА