0

Имитация нажатия клавиш клавиатуры

Содержание

В Windows Forms предоставляется несколько возможностей для программной имитации ввода данных с помощью мыши и клавиатуры. Windows Forms provides several options for programmatically simulating mouse and keyboard input. В этом разделе приведен обзор этих возможностей. This topic provides an overview of these options.

Имитация ввода с помощью мыши Simulating Mouse Input

Наилучшим способом имитации событий мыши является вызов метода On EventName , в результате чего происходит событие мыши, которое требуется имитировать. The best way to simulate mouse events is to call the On EventName method that raises the mouse event you want to simulate. Этот вариант обычно возможен только в пределах пользовательских элементов управления и форм, так как методы, которые вызывают события, защищены и недоступны вне элемента управления или формы. This option is usually possible only within custom controls and forms, because the methods that raise events are protected and cannot be accessed outside the control or form. Например, ниже показано, как имитировать нажатие правой кнопки мыши в коде. For example, the following steps illustrate how to simulate clicking the right mouse button in code.

Чтобы нажать правую кнопку мыши программными средствами, выполните указанные ниже действия. To programmatically click the right mouse button

Создайте объект MouseEventArgs и установите для его свойства Button значение MouseButtons.Right . Create a MouseEventArgs whose Button property is set to the MouseButtons.Right value.

Вызовите метод OnMouseClick с этим объектом MouseEventArgs в качестве аргумента. Call the OnMouseClick method with this MouseEventArgs as the argument.

Дополнительные сведения о пользовательских элементах управления см. в разделе Создание элементов управления Windows Forms во время разработки. For more information on custom controls, see Developing Windows Forms Controls at Design Time.

Существуют другие способы имитировать ввод с помощью мыши. There are other ways to simulate mouse input. Например, можно программно установить свойство элемента управления, которое представляет состояние, обычно устанавливаемое с помощью ввода мыши (например, свойство Checked элемента управления CheckBox ), или напрямую вызвать делегат, связанный с событием, которое нужно имитировать. For example, you can programmatically set a control property that represents a state that is typically set through mouse input (such as the Checked property of the CheckBox control), or you can directly call the delegate that is attached to the event you want to simulate.

Имитация ввода с клавиатуры Simulating Keyboard Input

Хотя ввод данных с клавиатуры можно имитировать с помощью подходов, описанных выше для ввода с помощью мыши, Windows Forms также предоставляет класс SendKeys для отправки нажатий клавиш в активное приложение. Although you can simulate keyboard input by using the strategies discussed above for mouse input, Windows Forms also provides the SendKeys class for sending keystrokes to the active application.

Если приложение предназначено для международного использования с различными клавиатурами, применение метода SendKeys.Send может иметь непредсказуемые результаты и его следует избегать. If your application is intended for international use with a variety of keyboards, the use of SendKeys.Send could yield unpredictable results and should be avoided.

Класс SendKeys был обновлен в .NET Framework 3.0, что позволило использовать его в приложениях, работающих в Windows Vista. The SendKeys class has been updated for the .NET Framework 3.0 to enable its use in applications that run on Windows Vista. Усиленная система безопасности Windows Vista (известная как контроль учетных записей или UAC) не позволяет предыдущей реализации работать должным образом. The enhanced security of Windows Vista (known as User Account Control or UAC) prevents the previous implementation from working as expected.

Класс SendKeys подвержен проблемам со временем, которые пришлось решать некоторым разработчикам. The SendKeys class is susceptible to timing issues, which some developers have had to work around. Обновленная реализация по-прежнему подвержена этим проблемам, но она работает немного быстрее, поэтому существующие решения может потребоваться переработать. The updated implementation is still susceptible to timing issues, but is slightly faster and may require changes to the workarounds. Класс SendKeys сначала пытается использовать предыдущую реализацию, и если это не удается, использует новую реализацию. The SendKeys class tries to use the previous implementation first, and if that fails, uses the new implementation. В результате класс SendKeys может работать по-разному в разных операционных системах. As a result, the SendKeys class may behave differently on different operating systems. Кроме того, при использовании новой реализации класса SendKeys метод SendWait не будет дожидаться обработки сообщений, если они отправляются другому процессу. Additionally, when the SendKeys class uses the new implementation, the SendWait method will not wait for messages to be processed when they are sent to another process.

Если необходимо обеспечить согласованное поведение приложения независимо от операционной системы, можно заставить класс SendKeys использовать новую реализацию, добавив указанный ниже параметр приложения в файл app.config. If your application relies on consistent behavior regardless of the operating system, you can force the SendKeys class to use the new implementation by adding the following application setting to your app.config file.

Читайте также:  Инстаграм вход через фейсбук с компьютера

Для принудительного использования классом SendKeys предыдущей реализации задайте значение "JournalHook" . To force the SendKeys class to use the previous implementation, use the value "JournalHook" instead.

Отправка нажатия клавиши в то же приложение To send a keystroke to the same application

Вызовите метод Send или SendWait класса SendKeys . Call the Send or SendWait method of the SendKeys class. Указанные нажатия клавиш будут получены активным элементом управления приложения. The specified keystrokes will be received by the active control of the application. В примере кода ниже метод Send используется для имитации нажатия клавиши ВВОД, когда пользователь дважды щелкает по поверхности формы. The following code example uses Send to simulate pressing the ENTER key when the user double-clicks the surface of the form. В этом примере используется форма Form с одним элементом управления Button , имеющим индекс перехода по клавише TAB, равный 0. This example assumes a Form with a single Button control that has a tab index of 0.

Отправка нажатия клавиши в другое приложение To send a keystroke to a different application

Активируйте окно приложения, которое будет получать нажатия клавиш, а затем вызовите метод Send или SendWait . Activate the application window that will receive the keystrokes, and then call the Send or SendWait method. Из-за отсутствия управляемого метода активации другого приложения необходимо использовать собственные методы Windows для принудительной установки фокуса на другие приложения. Because there is no managed method to activate another application, you must use native Windows methods to force focus on other applications. В примере кода ниже с помощью вызова неуправляемого кода вызываются методы FindWindow и SetForegroundWindow для активации окна приложения "Калькулятор", а затем вызывается метод SendWait для проведения ряда вычислений в этом приложении. The following code example uses platform invoke to call the FindWindow and SetForegroundWindow methods to activate the Calculator application window, and then calls SendWait to issue a series of calculations to the Calculator application.

Параметры вызова FindWindow для определения положения Калькулятора зависят от версии Windows. The correct parameters of the FindWindow call that locates the Calculator application vary based on your version of Windows. Приведенный ниже код находит Калькулятор в Windows 7 Windows 7 . The following code finds the Calculator application on Windows 7 Windows 7 . В Windows Vista Windows Vista измените первый параметр на SciCalc. On Windows Vista Windows Vista , change the first parameter to "SciCalc". Для определения нужных параметров можно использовать средство Spy++, входящее в состав Visual Studio. You can use the Spy++ tool, included with Visual Studio, to determine the correct parameters.

Пример Example

В примере ниже полностью представлено приложение для предыдущих примеров кода. The following code example is the complete application for the previous code examples.

Компиляция кода Compiling the Code

Для этого примера требуются: This example requires:

Всем привет, с Вами автор блога matrixblog.ru. Материал сегодняшней статьи затронет вопросы автоматизации действий на компьютере. Буду рассмотрены некоторые программы, но, основной упор будет сделан на суть самой темы.

Для начала, нужно понимать, что люди, которые интересуются программами для автоматизации различных действий на компьютере, имитации движений мыши и нажатия клавиш клавиатуры, не совсем понимают, чего хотят. Со стороны, всё кажется просто – мне нужна программа, которая будет воспроизводить мои действия с мышкою и клавиатурой, имитируя их. Хорошо, давайте попробуем разобрать суть ситуации…

Макросы – если вы ищите программы для автоматизации и имитации действия на компьютере, то, должны знать, что есть такое понятие как макрос. Лучше всего рассмотреть пример пакета Microsoft Office. Их программы (Word, Excel…) содержат встроенный редактор языка Visual Basic. Basic, Visual Basic, vbscript, неважно, главное, что это язык программирования, имеющий отношение к компании Майкрософт. Собственно, похожий, или аналогичный синтаксис языка может использоваться и в других языках программирования от дядюшки Билла. В отличие от отдельных пакетов, редактор Visual Basic в Майкрософт Оффис нацелен на выполнение программного кода в офисной среде, например, в Word или Excel. Подобные инструменты есть и в бесплатных аналогах Microsoft Office. Так, можно написать в редакторе программный код, сохранить его, там она называется макросом, и периодически запускать. Макрос, как правило, содержит программный код, позволяющий быстро выполнить рутинную работу, например:

  • Применить стиль к каждому второму абзацу.
  • Преобразовать все таблицы в текст и применить заданное форматирование.
  • Автоматически разделить содержимое и сохранить в отдельные документы.

Сами макросы в других программах, позволяют:

  • имитация нажатия кнопки мыши.
  • имитация нажатия клавиш клавиатуры.
  • имитация кликов мыши.
  • имитация клавиатуры.
  • имитация движения мыши.

Примеров различных макросов для Word и Excel большое количество. Однако, основной их плюс в том, что их можно создать без необходимости писать код, можно просто нажать кнопку PLAY и начнется запись ваших действий (выделение текста, применение стиля). Завершив запись (нажав STOP), автоматически появится новый макрос с программным кодом. Далее можно запустить сохраненный макрос, который будет работать на автоматизацию действий. Понятно, что косвенно, макросы тоже можно считать своеобразными программами для автоматизации пользовательских действий в редакторе Word или табличном процессоре Excel на компьютере. Формально, макросы в Оффис тоже создают имитацию мыши и клавиатуры, только в пределах редактора.

Нужно понимать, что такое понятие, как Макрос, использует и в других сферах программирования и языках.

Перехват событий – такие аспекты, как движение мышкой и клики кнопок, принято называть событиями. Событий может быть много, плюс, есть ещё различные объекты (окна, приложения, области окон и так далее). Большинство программ для автоматизации различных действий пользователя на компьютере, должны уметь перехватить события в виде движений мыши, кликов и нажатия клавиш клавиатуры, а потом создавать их имитацию. Некоторые программы автоматизации позволяют имитировать или программировать движения мыши, другие, позволяют перехватывать, или наоборот, имитировать нажатие клавиш на клавиатуре.

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

Понятно, что пользователей много, и задач тоже много. Кому-то надо автоматизировать процесс сортировки и переименования файлов или каталогов. Кто-то хочет сразу применить одно оформление к сотне Word документам. В последнем случае, для txt документов, можно использовать редактор Notepad++.

Читайте также:  Дом ру проверить подключение дома

Хорошо, рассмотрим несколько простых программа по теме статьи.

Программа Macro Dollar для имитации клавиатуры, мыши, движений и кликов

Macro Dollar – это старое и простое программное обеспечение автоматизации и имитации действий мыши и клавиатуры. Учитывая тот факт, что программа позволяет полностью записать, а потом имитировать действия мыши и клавиатуры, то её можно называть полноценным макросом.

Запустив Macro Dollar, мы увидим небольшое окно, кнопки для начала записи, остановки, и воспроизведения. Тут же есть несколько пунктов для отметки галочками:

  • Topmost – окно программы всегда будет на переднем плане.
  • Loop – если отметить эту опцию, то процесс воспроизведения имитации мыши и клавиатуры будет происходить бесконечно.
  • Shake – функция "встряхивания", когда курсор мыши трясет во время воспроизведения записи.
  • Play or record iconized – происходит минимизация окна программы во время записи.

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

Macro Dollar является портативной программой.

WinMacro – ещё одна простая программа имитации движений мыши и кнопок клавиатуры

WinMacro является столь же старой программой, как и Macro Dollar и до сих пор прекрасно работает. Только 3 шага требуются для записи; указать файл, в который будет производиться запись, нажать на кнопку записи и нажать горячую клавишу для Pause / Break, чтобы остановить запись. Всякий раз, когда вы хотите, воспроизвести запись, просто укажите путь к сохраненному .log файлу и нажмите кнопку воспроизведения. Воспроизведение может быть отменено с помощью горячих клавиш Ctrl + Esc. Кнопка Options позволяет задать количество повторов и скорость воспроизведения.

GhostMouse – призрачная имитация мыши и нажатий кнопок

GhostMouse – это очень простая программа для имитации действий пользователя, которая имеет в главном окне всего 2 кнопки (Play & Record). Она больше подходит для быстрого и кратковременного использования, но, конечно, и для автоматизации повторяющихся задач.

В отличие от предыдущих примеров, GhostMouse не является портативной, и требует установки. В меню Options можно задать скорость воспроизведения, а так же указать, что должна записывать или не записывать программа – нажатие клавиш, движения мышью и так далее.

Do It Again – создаём список макросов

Do It Again не сильно отличается от других 3-х инструментов, перечисленных выше, но одно преимущество у неё есть – список макро-записей, отображаемых в программе, что делает её удобным для пользователей, которым необходимо запускать различные задачи без ручной загрузки сценария в программу.

Программа Action(s) – полноценная автоматизация действий на компьютере

Action(s) является визуальным клоном Automator, который, однако, в списке доступных взаимодействий предлагает несколько меньшее количество вариантов.

Automator – гениальное встроенное приложение для OS X, которое позволяет без знания какого-либо скриптового языка реализовать автоматизацию действий на компьютере. Приложение может пригодиться тем, кто часто работает с цифровыми фотографиями. В качестве подходящего примера можно указать необходимость автоматического действия – все фотографии из заданной папки скопировать в новый каталог, уменьшить их разрешение на 72 DPI и преобразовать их из цифровой модели CMYK в RGB. Кроме того, однако, можно автоматизировать работу с текстом, электронной почтой, PDF документами, установить запуск сценариев в заданное время, и, например, работать с базой данных SQL.

Свою версию предлагают как для Windows, так и, как не парадоксально, для OS X. Можно установить автоматизацию действий на вашем компьютере с электронной почтой, файлами и папками, изображениями, браузером и простым текстом.

Преимуществом является готовый набор макросов, которые наиболее часто используются пользователями – в основном для работы с фотографиями и аудиовизуальным содержимым. И если нужное действие (макрос) отсутствует в библиотеке, а вы хотите его создать, то, скорее всего, нужное решение можно будет найти на пользовательском форуме, посвящённом программе Action(s). Важно отметить, что сама программа для автоматизации ваших действий на персональном компьютере или ноутбуке написана на Java. Имеется поддержка имитации движений мыши и нажатий клавиш клавиатуры.

Заключение

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

Начиная статью, я забыл сказать, что автоматизация действий на компьютере пользователя доступна не только в редакторе Word, Excel, но и в графическом редакторе Photoshop. Да, там есть такая функция, которая является, в некотором роде, аналогом макроса. Так, можно записать действия, которые применяются при обработке рисунка, сохранить их в самом же PSD файле, и потом спокойно воспроизводить для других графических данных. Полагаю, подобными возможности есть и в Corel Draw и в других подобных программах.

Спасибо за внимание. Автор блога Владимир Баталий

Советую ещё почитать:

  • Цветовые модели и их представление – HSB, Lab, CMYK, RGB, sRGB и Adobe RGB
  • Как создать облако тегов онлайн – парочка сервисов
  • Бесплатные программы для работы, обработки и редактирования аудио файлов
  • Обзор программ для создания образов ISO и других форматов
  • Основные параметры, которые нужно проверить перед покупкой монитора

>>>Подписаться на обновления блога!

2 комментария к записи “Бесплатные программы имитации мыши и клавиатуры, их движение и клики”

Есть ещё одна прога – Automatic Mouse and Keyboard
Хотелось бы уточнить – помимо макросов в определённых программах (ворд,ексель, фотошоп и тд и тп) другие программы при работе амкросов позволяют полноценно работать на ПК или это невозможно? Дело в том, что вышеуказанная прога выполняет макрос на ура, но при этом клава и мышь находятся во власти макроса, поэтому на компе ничего паралельно не сделать 🙁 Хотелось бы данный минус убрать.

На сколько я понял, вы хотите запустить макрос/программу, которые будут управлять мышью и вводить нужные команды с клавиатуры. При этом – хочется параллельно спокойно работать с другими приложениями. Проблема в том, что в ОС есть только один экземпляр мыши и клавиатуры.
Но. Если вам это поможет, можете установить виртуальную машину – VirtualPC или Oracle VM VirtualBox (мне больше нравится). Устанавливаете там нужную ос, программы и документы, запускаете на виртуалке макрос/программу. На виртуалке своя мышь и клавиатура, у вас своя.

Читайте также:  Как в фотошопе сделать отмену действия

Сегодня день рождения у Гвидо ван Россума, создателя Python. Поздравляем! Самое время поговорить о его детище и затронуть животрепещущую тему: как в Питоне имитировать нажатия клавиш при создании ботов. Суть бота — автоматическое выполнение действий, на которые не хочет тратить время человек. У программистов Python есть инструменты, позволяющие имитировать события клавиатуры и реагировать на них. Подборку таких инструментов вы и найдете ниже.

Зачем и кому это нужно

Поводы симулировать нажатие клавиш:

автоматизация — создание ботов для сайтов, приложений и игр. Пример: бот для автоматического заполнения форм или кормления/лечения игровых персонажей;

тестирование десктопных приложений — перебор возможных действий пользователя и реакций программы;

доступность — адаптация интерфейса для людей с ограниченными возможностями здоровья, в том числе за счёт эмуляции мыши (ведь без зрения ею не воспользуешься);

оптимизация — переназначение стандартных клавиш и/или замена недостающих кнопок физической клавиатуры.

Инструменты питониста для разных платформ

Для симуляции событий клавиатуры и мыши есть кроссплатформенный модуль PyUserInput , который работает поверх библиотек и фрейморков:

Quartz и AppKit — на Mac,

pywin32, pyHook — в Windows.

Для Windows также стоит отметить:

pyautoit — это Python API к средству автоматизации AutoIt;

pywinauto — набор модулей, который автоматизирует взаимодействие с Microsoft Windows GUI. Библиотека написана на чистом Python — простейшие её функции по обработке событий мыши и клавиатуры работают и в Linux. Но более сложные возможности для работы с текстом заточены именно под Windows и доступны только там.

Актуальные версии этих инструментов поддерживают Python 3, более ранние — Python 2.

Как это работает: примеры

В директории examples каталога pywinauto на GitHub собраны два десятка наглядных примеров по использованию библиотеки. С их помощью вы можете прямо сейчас создавать ботов, которые умеют устанавливать/удалять программы, скачивать web-страницы, перетаскивать файлы между окнами, пакетно обрабатывать изображения в MS Paint и решать другие задачи.

Новички оценят читаемость кода:

Хорошо? Представьте, что вам нужно перенастроить приложение из дефолтного состояния на N-ном количестве компьютеров — выбрать нужные пункты меню, заполнить нужные поля. Или вы тестируете свою программу вдоль и поперёк, чтобы выявить сбои при обращении к GUI. Скрипт, который вам потребуется, будет длиннее, чем в примере выше, но по сути усложнится незначительно.

Добавьте сюда возможность работать с любыми приложениями на Win32 GUI и виджетами под интерфейс MS UI Automation.

Устанавливается pywinauto как обычный пакет — через pip install — и автоматически ставит еще несколько полезных компонентов: библиотеку pyWin32 , COM-клиент и серверный фрейморк comtypes , библиотеку six , которая обеспечивает совместимость Python 2 (начиная с 2.6) и 3. Всё это пригодится начинающему разработчику не только для создания ботов, но и в разработке собственных программных продуктов.

Сегодня день рождения у Гвидо ван Россума, создателя Python. Поздравляем! Самое время поговорить о его детище и затронуть животрепещущую тему: как в Питоне имитировать нажатия клавиш при создании ботов. Суть бота — автоматическое выполнение действий, на которые не хочет тратить время человек. У программистов Python есть инструменты, позволяющие имитировать события клавиатуры и реагировать на них. Подборку таких инструментов вы и найдете ниже.

Зачем и кому это нужно

Поводы симулировать нажатие клавиш:

автоматизация — создание ботов для сайтов, приложений и игр. Пример: бот для автоматического заполнения форм или кормления/лечения игровых персонажей;

тестирование десктопных приложений — перебор возможных действий пользователя и реакций программы;

доступность — адаптация интерфейса для людей с ограниченными возможностями здоровья, в том числе за счёт эмуляции мыши (ведь без зрения ею не воспользуешься);

оптимизация — переназначение стандартных клавиш и/или замена недостающих кнопок физической клавиатуры.

Инструменты питониста для разных платформ

Для симуляции событий клавиатуры и мыши есть кроссплатформенный модуль PyUserInput , который работает поверх библиотек и фрейморков:

Quartz и AppKit — на Mac,

pywin32, pyHook — в Windows.

Для Windows также стоит отметить:

pyautoit — это Python API к средству автоматизации AutoIt;

pywinauto — набор модулей, который автоматизирует взаимодействие с Microsoft Windows GUI. Библиотека написана на чистом Python — простейшие её функции по обработке событий мыши и клавиатуры работают и в Linux. Но более сложные возможности для работы с текстом заточены именно под Windows и доступны только там.

Актуальные версии этих инструментов поддерживают Python 3, более ранние — Python 2.

Как это работает: примеры

В директории examples каталога pywinauto на GitHub собраны два десятка наглядных примеров по использованию библиотеки. С их помощью вы можете прямо сейчас создавать ботов, которые умеют устанавливать/удалять программы, скачивать web-страницы, перетаскивать файлы между окнами, пакетно обрабатывать изображения в MS Paint и решать другие задачи.

Новички оценят читаемость кода:

Хорошо? Представьте, что вам нужно перенастроить приложение из дефолтного состояния на N-ном количестве компьютеров — выбрать нужные пункты меню, заполнить нужные поля. Или вы тестируете свою программу вдоль и поперёк, чтобы выявить сбои при обращении к GUI. Скрипт, который вам потребуется, будет длиннее, чем в примере выше, но по сути усложнится незначительно.

Добавьте сюда возможность работать с любыми приложениями на Win32 GUI и виджетами под интерфейс MS UI Automation.

Устанавливается pywinauto как обычный пакет — через pip install — и автоматически ставит еще несколько полезных компонентов: библиотеку pyWin32 , COM-клиент и серверный фрейморк comtypes , библиотеку six , которая обеспечивает совместимость Python 2 (начиная с 2.6) и 3. Всё это пригодится начинающему разработчику не только для создания ботов, но и в разработке собственных программных продуктов.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *