Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Эмуляция нажатия клавиши даже в неактивном окне

Delphi , ОС и Железо , Клавиши



Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Эмуляция нажатия клавиши в любом окне, в т.ч. неактивном

Процедура эмулирует нажатие клавиши в любом окне путём посылки ему пары
сообщений WM_KEYDOWN и WM_KEYUP. Процедура принимает два параметра -
Handle окна и код клавиши (см. описание констант VK_xxxx).

Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        29 апреля 2002 г.
***************************************************** }

procedure EmulateKey(Wnd: HWND; VKey: Integer);
asm
   push 0
   push edx
   push 0101H //WM_KEYUP
   push eax
   push 0
   push edx
   push 0100H //WM_KEYDOWN
   push eax
   call PostMessage
   call PostMessage
end;

// Пример использования:
EmulateKey(Edit1.Handle, VK_RETURN);

Классический снIPPET на Delphi!

Эта процедура эмулирует нажатие клавиши в любом окне, отправляя два сообщения Windows: WM_KEYDOWN и WM_KEYUP. Процедура принимает два параметра:.handle окна, для которого нужно эмулировать нажатие клавиши, и код виртуальной клавиши (например, VK_RETURN, VK_SPACE и т.д.).

Вот разбивка кода:

  1. Процедура начинается с блока ассемблера (asm), который кладет на стек следующие значения:
    • 0 (неиспользуемое значение)
    • edx (который предполагается содержать handle окна, но не явно задан в этом примере)
    • 0101H (сообщение WM_KEYUP)
    • eax (который содержит handle окна, как передано параметром процедуры)
    • 0 (неиспользуемое значение)
    • edx (опять-таки, предполагается содержать handle окна)
    • 0100H (сообщение WM_KEYDOWN)
    • eax (опять-таки, содержит handle окна)
  2. Инструкция call PostMessage отправляет два сообщения (WM_KEYUP и затем WM_KEYDOWN) в указанное окно.

Пример использования в конце показывает, как использовать эту процедуру для эмулирования нажатия клавиши в контроле редактирования:

EmulateKey(Edit1.Handle, VK_RETURN);

Это эмулирует нажатие клавиши Enter в контроле редактирования с handle Edit1.Handle.

Обратите внимание, что это старый-старый снIPPET на Delphi от 2002 года, поэтому вам может потребоваться обновление его в соответствии с вашими конкретными требованиями и текущей версией Windows API.

Процедура EmulateKey эмулирует нажатие клавиши в любом окне, включая неактивные, отправляя пары сообщений WM_KEYDOWN и WM_KEYUP.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Клавиши ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:58:14/0.0032520294189453/0