Понедельник, 21.08.2017, 15:06 Приветствую вас Гость | Группа "Гости" 


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024 
delfcode » Delphi » Вопросы по Delphi » Симуляция нажатия клавиш
Симуляция нажатия клавиш
cool1Дата: Пятница, 15.07.2011, 07:11 | Сообщение # 1
Участник
Зарегистрирован: 14.07.2010
Группа: Пользователи
Сообщений: 238
Статус: Offline
Здравствуйте помогите симулировать нажатие клавиши к примеру "D" ну допустим в notepad.exe! Заранее спасибо! biggrin


За помощь ставьте +!
 
NeoДата: Пятница, 15.07.2011, 09:13 | Сообщение # 2
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 316
Статус: Offline
Попробуй так:
Code
var h1,h3:HWND;
begin
H1:=FindWindow(nil,'Безымянный - Блокнот');//хэндл проги
if h1=0 then
begin
   Application.MessageBox(PChar('Не найдено окно'), 'Внимание');
   exit
end;
   H3:=FindWindowEx(H1,0,'Edit','');//хэндл эдита
   SendMessage(H3,WM_SETTEXT,0,lparam( LPCTSTR('D ') ));//посылаешь текст в эдит
end;
 
NeoДата: Пятница, 15.07.2011, 09:16 | Сообщение # 3
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 316
Статус: Offline
А если в AkelPad,то 9 строка будет
Code
H3:=FindWindowEx(H1,0,'AkelEditW','');//хэндл эдита
 
gravitasДата: Пятница, 15.07.2011, 10:39 | Сообщение # 4
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Neo, посылка WM_SETTEXT - не есть эмуляция нажатия клавиши в программе...
Хотя cool'y это скорее всего и было нужно, просто он малость ошибся с названием топика.
И на заметку: эмуляция делается при помощи WM_CHAR. 3-им параметром функции SendMessage является код символа, который получается при помощи функции Ord().


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
xXxSh@dowxXxДата: Понедельник, 23.04.2012, 18:56 | Сообщение # 5
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
ок все это хорошо, а если нам нужно эмитировать нажатие клавиши не в каком либо окне или программе а просто в самой ОС, к примеру есть программа в которой заранее забито сочетание клавишь при котором происходит какое либо действие, и данная программа как кейлогер отслеживает эти клавиши и ждет, но это еще пол беды, тут опять же код не так сложен и нам на помощь приходит:

Code

  keybd_event(Ord('Z'), 0, 0, 0); //Нажатие 'z'.
  keybd_event(Ord('Z'), 0, KEYEVENTF_KEYUP, 0); //Отпускание 'z'.


как пример, но есть более сложные ситуации которые к сожалению мне так и не удалось решить...

каким же все таки образом можно эмитировать нажатие клавиши в некоторых графических приложениях, тоесть играх в которых обычными методами клавиши не эмулируются, как же это делают скрипты вроде AutoHotkey script и некоторые другие, а так же как передать нажатие клавиши в готовый AutoHotkey script ?
 
delfcode » Delphi » Вопросы по Delphi » Симуляция нажатия клавиш
Страница 1 из 11
Поиск:

delfcode.ru © 2008 - 2017 Хостинг от uCoz