cool1
|
Дата: Пятница, 15.07.2011, 07:11 | Сообщение # 1
|
Участник
Зарегистрирован: 14.07.2010
Группа: Пользователи
Сообщений: 238
Статус: Offline
|
Здравствуйте помогите симулировать нажатие клавиши к примеру "D" ну допустим в notepad.exe! Заранее спасибо! 

За помощь ставьте +!
|
|
|
|
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 ?
|
|
|
|