Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Swarog
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 3
1

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

22.05.2012, 23:02. Просмотров 1389. Ответов 0
Метки нет (Все метки)

Доброго времени суток.Я столкнулся с такой проблемой. Мне нужно написать программу для нажатия Hot Key в игре. Я нашел класс окна и handle окна, и Pid, но при отправке нажатия клавиши окно никак не реагирует. За то при активации чата в окне оно реагирует на ввод и вводит символы в строку чата, также при использовании windows.setfocus().Пробовал sendmessage(), postmessage() для них пробовал (vm_char,wm_keydown,wm_keyup). Пытался найти все классы в данном окне но без успешно дальше класса основного окна не находит. Подскажите как можно решить данную проблему.

Вот мой код решения на данный момент.
Нажатие клавиши:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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;
 
procedure TForm1.Button1Click(Sender: TObject);
var wnd:thandle; i:integer;
begin
wnd:=findwindow('PND-CL','PandoraSaga');//определяю Hadle 
windows.SetFocus(wnd);
sendmessage(wnd,wm_char,54,0);//посылаю нажатие клавиши
{EmulateKey(wnd;ord('6'));}//в данном случае без sendmessage() два раза нажимает
end;
 
это на нахождение дочерних окон:
 
function EnumChildwnd(wnd: hwnd): BOOL; stdcall;
var s:array[0..255] of char;
begin
getclassname(wnd,s,256);
form1.Memo1.Lines.Add(string(s));
Result:=true;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
wnd:hwnd;    s:array[0..255] of char;
begin
h:=findwindow(nil,'PandoraSaga') ;
getclassname(wnd,s,256);
form1.Memo1.Lines.Add(string(s));
EnumChildWindows(wnd,@EnumChildwnd,0);
end;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 23:02
Ответы с готовыми решениями:

Эмуляция нажатия клавиш в неактивном окне (Игра)
Пытаюсь передать в игру нажатие клавиши F1, но ничего не получается. Пробовал разные способы,...

Эмуляция нажатия клавиши в чужом окне
h:=FindWindow(nil,'Калькулятор'); if h = 0 then exit; sh:=FindWindowEx(h,0,'Button','&1'); ...

Эмулировать клик или нажатие клавиши в неактивном (свернутом) окне формы в браузере
Сделал программку с браузером, где эмулируются клики и нажатия клавиш. Где смог, сделал клики с...

Эмуляция нажатия клавиши в окно
Здравствуйте. На форуме тонна тем по этому поводу, но везде описано как отправить команду в...

Эмуляция нажатия мыши или кнопки в не актвном окне
Можно ли как нибудь сделать нажатие мыши или клавиши F5 в не активном окне, без передачи фокуса...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2012, 23:02

Клик в неактивном окне
всем привет,помогите плиз,не пойму в чём дело F1 в неактивном окне нажимает,а по координатам не...

Нажатие на кнопку в неактивном окне
Добрый день,у меня есть такая задача,есть свернутая программа,нужно нажать на кнопку (например V) и...

После нажатия клавиши Enter или нажатия на Button
Помогите пожалуйста.:-[ Задача: После нажатия клавиши Enter или нажатия на Button поле курсора...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru