Как имитировать события клавиатуры (Windows Forms .NET)
В Windows Forms предоставляется несколько возможностей для программной имитации ввода данных с клавиатуры. В этой статье представлены общие сведения об этих возможностях.
Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.
Использование SendKeys
Windows Forms предоставляет класс System.Windows.Forms.SendKeys для отправки нажатий клавиш в активное приложение. Существует два метода отправки в приложение нажатий клавиш: SendKeys.Send и SendKeys.SendWait. Разница между двумя методами заключается в том, что при отправке нажатия клавиши SendWait блокирует текущий поток, ожидая ответа, а Send — нет. Дополнительные сведения о методе SendWait см. в разделе Отправка нажатия клавиши в другое приложение.
Если приложение предназначено для международного использования с различными клавиатурами, применение метода SendKeys.Send может иметь непредсказуемые результаты и его следует избегать.
В фоновом режиме SendKeys использует более раннюю реализацию Windows для отправки ввода, что может привести к сбою в современных версиях Windows, где предполагается, что приложение не выполняется с правами администратора. Если старая реализация завершается сбоем, код автоматически пытается выполнить новую реализацию Windows для отправки ввода. Кроме того, когда класс SendKeys использует новую реализацию, метод SendWait больше не блокирует текущий поток при отправке нажатий клавиш в другое приложение.
Если необходимо обеспечить согласованное поведение приложения независимо от операционной системы, можно заставить класс SendKeys использовать новую реализацию, добавив указанный ниже параметр приложения в файл app.config.
Для принудительного использования классом SendKeysтолько предыдущей реализации задайте значение «JournalHook» .
Отправка нажатия клавиши в то же приложение
Вызовите метод SendKeys.Send или SendKeys.SendWait класса SendKeys . Указанные нажатия клавиш будут получены активным элементом управления приложения.
В следующем примере кода метод Send используется для имитации одновременного нажатия клавиш ALT и ВНИЗ . Эти нажатия клавиш приводят к тому, что элемент управления ComboBox отображает свой раскрывающийся список. В этом примере предполагается наличие Form с Button и ComboBox.
private void button1_Click(object sender, EventArgs e) < comboBox1.Focus(); SendKeys.Send("%+"); >
Private Sub Button1_Click(sender As Object, e As EventArgs) ComboBox1.Focus() SendKeys.Send("%+") End Sub
Отправка нажатия клавиши в другое приложение
Методы SendKeys.Send и SendKeys.SendWait отправляют нажатия клавиш в активное приложение, которое обычно является приложением, из которого отправляются нажатия клавиш. Чтобы отправить нажатия клавиш в другое приложение, необходимо сначала активировать его. Из-за отсутствия управляемого метода активации другого приложения необходимо использовать собственные методы Windows для установки фокуса на другие приложения. В примере кода ниже с помощью вызова неуправляемого кода вызываются методы FindWindow и SetForegroundWindow для активации окна приложения «Калькулятор», а затем вызывается метод Send для проведения ряда вычислений в этом приложении.
В следующем примере кода метод Send используется для имитации нажатия клавиш в приложении «Calculator» (Калькулятор) в Windows 10. Сначала он ищет окно приложения с заголовком Calculator , а затем активирует его. После активации окна отправляются нажатия клавиш для вычисления выражения «10 плюс 10».
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("USER32.DLL")] public static extern bool SetForegroundWindow(IntPtr hWnd); private void button1_Click(object sender, EventArgs e) < IntPtr calcWindow = FindWindow(null, "Calculator"); if (SetForegroundWindow(calcWindow)) SendKeys.Send("1010="); >
Public Shared Function FindWindow(lpClassName As String, lpWindowName As String) As IntPtr : End Function Public Shared Function SetForegroundWindow(hWnd As IntPtr) As Boolean : End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Dim hCalcWindow As IntPtr = FindWindow(Nothing, "Calculator") If SetForegroundWindow(hCalcWindow) Then SendKeys.Send("1010=") End If End Sub
Использование методов OnEventName
Самый простой способ имитации событий клавиатуры — вызов метода для объекта, который вызывает событие. У большинства событий есть соответствующий метод, который их вызывает, с шаблонным именем, начинающимся с On , за которым следует EventName , например OnKeyPress . Этот вариант возможен только в пределах пользовательских элементов управления или форм, так как эти методы защищены и недоступны вне контекста элемента управления или формы.
Эти защищенные методы можно использовать для имитации событий клавиатуры.
- OnKeyDown
- OnKeyPress
- OnKeyUp
Дополнительные сведения об этих событиях см. в разделе Использование событий клавиатуры (Windows Forms .NET).
См. также
- Общие сведения об использовании клавиатуры (Windows Forms .NET)
- Использование событий клавиатуры (Windows Forms .NET)
- Использование событий мыши (Windows Forms .NET)
- SendKeys
- Keys
- KeyDown
- KeyPress
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Имитация нажатия клавиш
Для игры! Там нужно набивать монетки постоянно клацая клавишу Ф2 которая активирует макрос для атаки монстров!
Голосование за лучший ответ
Сколько людей ща подумали про Гомера )))
http://www.autohotkey.com/ если разберёшся 🙂
Есть много программ, которые эмулируют действия пользователя, в том числе и нажатия на клавиши.
Из бесплатных могу порекомендовать программку AHK — AutoHotKey. сайт производителя тут: www ТОЧКАautohotkeyТОЧКАcom
да видать кликерша очередная наслушалась о деньгах))) )
А так в бразере ссылку открвает
Есть программа кликер и есть экранная клавиатура вот обьедени их
Как имитировать нажатие Enter в Lua?
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
wanttea
Новичок
Автор темы
Как имитировать нажатие на Enter?
#SameLine
Как имитировать нажатие на Enter?

Имитация нажатия
Здравствуйте, можно ли как то имитировать нажатие клавиши в луа? Что бы сервер думал что ты нажимаешь эти клавиши на клавиатуре
![]()
www.blast.hk

Информация — Номера клавиш
Всем привет! Темы тут на форуме не нашел, а так как выкладывать просто текст не круто, то сделал это картинкой 🙂 Решил сделать 2 вариантами так как моя картинка не полная. P.S Если картинка не в полном размере смотрим тут Программу для определения всех клавиш прикрепил вложением. Вопрос.
![]()
www.blast.hk
setVirtualKeyDown(13, true) -- зажатие 13 клавиши (Enter) wait(1000) -- задержка на секунду setVirtualKeyDown(13, false) -- отпускание 13 клавиши (Enter)
Батник, имитирующий нажатие клавиши клавиатуры?
Нужен батник, который будет нажимать клавишу клавиатуры, и запускать софт. Действия вообще не связаны между собой никак, просто надо, что бы я это всё запускал через один файл. Если с запуском программы всё понятно — обычный батник
@echo off start «» *** exit
То с нажатием клавиши не понятно вообще ничего. Как её имитировать? Пытался гуглить, но там всё программисты друг у друга спрашивают, готового кода нет, и мне, простому пчелу ничего не понятно, я даже так и не понял, возможно ли это вообще сделать.
В общем, подскажите пожалуйста, что вписать в тот батник, на примере любой клавиши.