Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 7

Управление другим приложением!

27.01.2011, 17:34. Показов 4479. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть приложение (простенькая старенькая любимая игра без исходников).
НЕ ПУТАТЬ С БОТОВОДСТВОМ!

Задача передать в неё эмуляцию нажатия клавиш из своего приложения для дальнейшего сохранения настроек.

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

Проблема окно не реагирует на эмуляцию нажатия клавиш.
Пробовал так:
Delphi
1
2
3
 PostMessage(ExternHandle, WM_ACTIVATE, WA_ACTIVE,0);
  PostMessage(ExternHandle, WM_SETFOCUS, 0, 0);
  PostMessage(ExternHandle, WM_CHAR, 67, 0);
и так
Delphi
1
2
3
4
5
   SetForegroundWindow(ExternHandle);
   SetActiveWindow(ExternHandle);
   sleep(100);
   keybd_event(67,0,0,0);
   keybd_event(67,0,keyeventf_keyup,0 );
и так

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
procedure SendKeyDown(h: Hwnd; key: char);
var nKey, ScanCode, wParam: Word;
    lParam, ConvKey: longint;
begin
  ConvKey:= OemKeyScan(ord(Key));
  ScanCode:= ConvKey and $000000FF or $FF00;
  nkey:= ord(key);
  wParam:= nKey;
  lParam:= longint(ScanCode) shl 16 or 1;
  SendMessage(H, WM_KEYDOWN, nkey, lParam);
end;
 
procedure SendKeyUp(h: Hwnd; key: char);
var nKey, ScanCode, wParam: Word;
    lParam, ConvKey: longint;
begin
  ConvKey:= OemKeyScan(ord(Key));
  ScanCode:= ConvKey and $000000FF or $FF00;
  nkey:= ord(key);
  wParam:= nKey;
  lParam:= longint(ScanCode) shl 16 or 1;
  lParam:= lParam or $C0000000;
  SendMessage(H, WM_KEYUP, nkey, lParam);
end;
Помогите разобраться что не так?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.01.2011, 17:34
Ответы с готовыми решениями:

Значение, возвращаемое приложением должно быть "увидено" другим приложением
Всем привет. Подскажите пожалуйста, как после определённого события, к примеру, при нажатии на кнопку, приложение возвращало-бы...

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

Управление другим приложением
Добрый день. Не могу никак разобраться. У программы которой хочу управлять знаю все с помощью проги spy++: дескриптор, заголовок,...

13
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.01.2011, 17:54
Shadow_2000, возможно, внутри главного окна, есть отдельный элемент, который занимается обработкой нажатий ... Попробуйте получить дочерние окна и воспользоваться функцией SendInput для посылки и исполнения нужных кодов клавиш.
0
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 7
27.01.2011, 18:10  [ТС]
MikeSoft,
В графическом окне нет дочерних элементов и окон.
Окно в графическом режиме и создано DirectDraw!

По вашему совету пробую так
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
procedure TForm1.Button1Click(Sender: TObject);
 var
   Inp: TInput;
   I: Integer;
 begin
 
   SetForegroundWindow(ExternHandle);
   SetActiveWindow(ExternHandle);
   sleep(100);
 
     // press
    Inp.Itype := INPUT_KEYBOARD;
     Inp.ki.wVk := Ord('C');
     Inp.ki.dwFlags := 0;
     SendInput(1, Inp, SizeOf(Inp));
 
     // release
    Inp.Itype := INPUT_KEYBOARD;
     Inp.ki.wVk := Ord('C');
     Inp.ki.dwFlags := KEYEVENTF_KEYUP;
     SendInput(1, Inp, SizeOf(Inp));
 
     Application.ProcessMessages;
     Sleep(80);
end;
и всё равно не работает
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.01.2011, 19:46
Заливайте сюда приложение, к которому пытаетесь обратиться.
0
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 7
27.01.2011, 19:59  [ТС]
MikeSoft,

вот она
Вложения
Тип файла: rar mame.rar (2.47 Мб, 39 просмотров)
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.01.2011, 20:06
Shadow_2000,
mame.zip: Архив повреждён или имеет неизвестный формат
Также, в самом архиве нет исполняемых файлов.
Если для запуска используется эмулятор - вылаживайте и его.
0
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 7
27.01.2011, 20:20  [ТС]
MikeSoft,
внутри exe файл
mame.exe с него запускается
после запуска надо выбрать игру и чуть позже нажать ok и запустится игра

Добавлено через 1 минуту
MikeSoft,
там по кнопке tab менюха можно самому кнопки управления настроить
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.01.2011, 20:34
Попробовал перекачать... То же самое:
Цитата Сообщение от MikeSoft Посмотреть сообщение
mame.zip: Архив повреждён или имеет неизвестный формат
0
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 7
27.01.2011, 20:39  [ТС]
MikeSoft,
вот еще раз
Вложения
Тип файла: rar proga.rar (2.47 Мб, 40 просмотров)
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.01.2011, 21:03
Shadow_2000, опять то же самое ... а чем вы сжимаете?
WinRAR 3.9 - ни в какую не хочет распаковывать.
0
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 7
27.01.2011, 21:12  [ТС]
ИМ И ЖМУ. МОЖЕТ НА ПОЧТУ КИНУТЬ
0
 Аватар для AlexSt
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
28.01.2011, 05:35
Цитата Сообщение от MikeSoft Посмотреть сообщение
Shadow_2000, опять то же самое ... а чем вы сжимаете?
WinRAR 3.9 - ни в какую не хочет распаковывать.
у меня рар3.5 без проблем распаковал
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.01.2011, 06:34
Total Commander штатными средствами распаковал, даже не вякнул.
0
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 7
28.01.2011, 10:22  [ТС]
LK,
Есть мысли по моей проблеме?
В чём может быть заморочка!

Delphi
1
 PostMessage(ExternHandle, WM_CLOSE, 0, 0);
проходит аж бегом!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2011, 10:22
Помогаю со студенческими работами здесь

Управление другим приложением
Допустим, мы имеем простое оконное приложение А, которое имеет падающее меню со списком цифр от 1 до 9. Можно ли создать такое отдельное от...

управление другим приложением
Есть flash приложение в окне браузера (допустим webBrowser на форме). Так вот... програмно нажать кнопку в этом приложении?

Управление другим приложением из приложения
Есть игра "Stronghold Kingdoms", как полагается есть ресурсы, торговля и т.д... Возможно ли управлять этим приложением, нажимать в нем...

Управление другим приложением через ADB
Доброго времени суток! Хочу реализовать фишку включения каналов голосом в умном доме, правда ранее она у меня уже была реализована через...

Управление программой написанной на C# другим приложением(ями)
Прошу предоставить примеры кода или ссылки на литературу по управлению программой написанной на C# другими приложениями. Что...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru