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

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

27.01.2011, 17:34. Показов 4448. Ответов 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
3956 / 1811 / 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
3956 / 1811 / 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
3956 / 1811 / 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
3956 / 1811 / 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
3956 / 1811 / 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru