Форум программистов, компьютерный форум CyberForum.ru

Передаём нажатия - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.03.2010, 15:03     Передаём нажатия #1
Приветствую всех читателей!
У меня такая проблема образовалась. Вообщем надо другому приложению (игре допустим) передать нажатия клавиш (например "r").

Как такое возможно реализовать? Пожалуйста, если не затруднит, помоги. Примеры приветствуются.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2010, 15:03     Передаём нажатия
Посмотрите здесь:

проверка нажатия клавиши C++
Обработка нажатия клавиши UP C++
C++ Ожидание нажатия клавиши!!!
C++ Нажатия клавиш
Счётчик нажатия на кнопку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
16.03.2010, 15:10     Передаём нажатия #2
другому? откуда?
char ch = getch();
switch(ch){
case ...
...
}
можно в файл записывать, считывать оттуда и очищать файл..
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.03.2010, 15:39  [ТС]     Передаём нажатия #3
из консольного приложения на си++
и можно примерчик поподробнее? я новичёк, осваиваю
Yurii_74
paladin
 Аватар для Yurii_74
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
16.03.2010, 15:56     Передаём нажатия #4
SendMessage, PostMessage функции для передачи данных подобного рода приложениям в Windows.
Дальше разбираться с параметрами. Справка. Желательно знание английского.
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.03.2010, 21:26  [ТС]     Передаём нажатия #5
Вообщем надо передать окну (программе), например будет называться "MyGame" нажатие клавишы ESC.
Помогите, пожалуйста, такое реализовать. Уже читал про Send(Post)Message, но так и не дошло до меня
Заранее благодарен.
Yurii_74
paladin
 Аватар для Yurii_74
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
17.03.2010, 12:47     Передаём нажатия #6
Вам потребуется handle окна, обрабатывающего нажатия.

Скорее всего вам потребуется отправлять эти сообщения:

WM_KEYDOWN
WM_KEYUP
WM_SYSKEYDOWN
WM_SYSKEYUP

lParam, wParam - хорошо разжеваны в справке.
Тут много ссылок по работе с клавиатурой. English!
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
17.03.2010, 16:57     Передаём нажатия #7
Имитация клавишь в другом окне

Читать вдумчиво.
Принимаю подуманные вопросы.
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 13:34  [ТС]     Передаём нажатия #8
Цитата Сообщение от kravam Посмотреть сообщение
Имитация клавишь в другом окне

Читать вдумчиво.
Принимаю подуманные вопросы.
Ну вот у меня найдено окно,
C++
1
2
3
4
5
6
7
8
9
wchar_t AdresZagolovkaOkna [MY_BUFSIZE]= L"GTA:SA:MP";
    HWND DeskriptorOkna;
    if (!(DeskriptorOkna= FindWindow(NULL, AdresZagolovkaOkna))){
        printf ("GTA:SA:MP windows not detected\n" );
        getchar ();
    }
    else {
        printf ("GTA:SA:MP window detected. Deskriptor: %x\n", DeskriptorOkna);
    }
проверено, что главное
C++
1
2
3
if(GetWindow(DeskriptorOkna,GW_OWNER)==NULL){
        printf ("\n1");
    } else { printf ("\n2"); }
раскрою тему - я ищу окно игры GTA SanAndreas Multiplayer, заказ на него.
окно само называется GTA:SA:MP ищу его. находит. отсылаю клавишы.
C++
1
2
PostMessage(DeskriptorOkna, WM_KEYDOWN, 27, 1); // Esc, т.к. при сложенной игре игра уходит в эскейп
PostMessage(DeskriptorOkna, WM_KEYDOWN, 114, 1);
но клавиши так и не отсылаются... помогите, а...
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.03.2010, 13:52     Передаём нажатия #9
ЭТо пробуй
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 14:43  [ТС]     Передаём нажатия #10
разница небольшая, чесно сказать никакой...
похоже у меня не то окно найдено... т.к. ставлю окно, например, на оперу - всё ок, передаётся. нужна помощь с поиском окошечка фул скрин GTA:SA:MP
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.03.2010, 14:52     Передаём нажатия #11
Ну я даже не знаю, что сказать.
Слушай, сперва попробуй найди идентификатор окна проверенными методами.

Скачай прогу, ссылку я давал установи её. И ищи с помощью неё хэендл окна. Потом вручную вводи его в свою прогу и смотри эффект. Хочу лишь напомнить тебе, что в той теме, на которую я указывал, я выяснил, что несчастный блокнотик создаёт аж целых 4 окошка! А все думают что оно одно и вводят заголовок окна и ошибаются. Так же и ты, ищешь по заголовку окна ("GTA:SA:MP" если я правильно понял, это заголовок), а не то.

...ТО есть я хочу сказать, что запросто может быть, что ты всё правильно находишь и шлёшь сообщение ФАКТИЧЕСКИ РАМКЕ ОКНА, которая называется "GTA:SA:MP", а ей всё равно
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 15:09  [ТС]     Передаём нажатия #12
Цитата Сообщение от kravam Посмотреть сообщение
Скачай прогу, ссылку я давал установи её.
эмм, ссылки что-то не нашёл, а в сети проги этой не вижу... кинь куда-нибудь её, пожалуйста.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.03.2010, 15:15     Передаём нажатия #13
Да, я не выкладывал ссылку. На, держи.
Вложения
Тип файла: zip objectviewer.zip (173.0 Кб, 15 просмотров)
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 15:31  [ТС]     Передаём нажатия #14
Цитата Сообщение от kravam Посмотреть сообщение
Да, я не выкладывал ссылку. На, держи.
таак... отлично, спасибо, программу запустил. вот выбираю вкладку с названием "GTA:SA:MP"
там, я так понимаю, мне нужен (Handler) ? что с ним делать далее?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.03.2010, 15:47     Передаём нажатия #15
Я бы на твоём месте открыл окошко "GTA:SA:MP" запустил бы прогу (там есть режим "РАзное"->"активный курсор") и курсором бы погонял над этим окном дабы убедиться в том, что сама надпись непосредственно "GTA:SA:MP" имеет один хэндл (в программе называется "указатель на память"), а то место НЕПОСРЕДСТВЕННО, куда тебе надо послать сообщение- другой хэндл.
НУ, или убедиться в обратном.

Это первое что надо выяснить
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
21.03.2010, 15:48     Передаём нажатия #16
По поводу игр, не знаю, а вдруг игра пользуется системой DirectInput:
в обход стандартным Windows api.
Простые окна обмениваются с помощью SendMessage(..).
Если игра не использует DirectInput а использует стандартный api, тогда и SendMessege прокатит.
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 15:50  [ТС]     Передаём нажатия #17
Цитата Сообщение от kravam Посмотреть сообщение
Я бы на твоём месте открыл окошко "GTA:SA:MP" запустил бы прогу (там есть режим "РАзное"->"активный курсор") и курсором бы погонял над этим окном дабы убедиться в том, что сама надпись непосредственно "GTA:SA:MP" имеет один хэндл (в программе называется "указатель на память"), а то место НЕПОСРЕДСТВЕННО, куда тебе надо послать сообщение- другой хэндл.
НУ, или убедиться в обратном.

Это первое что надо выяснить
такс, а что мне делать, если игра фулл скрин?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.03.2010, 15:52     Передаём нажатия #18
Честно говоря, я не знаю, что такое фулл скрин...
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 15:53  [ТС]     Передаём нажатия #19
ну, всмысле, игра на весь экран. и я, соответственно, не вижу окна программы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2010, 16:01     Передаём нажатия
Еще ссылки по теме:

C++ Отлов нажатия клавиш
Проверка нажатия enter C++
Имитация нажатия клавиш C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.03.2010, 16:01     Передаём нажатия #20
Слушай, я этого не учёл. Тогда тебе таким образом, конечно, не найти хэндл окна игры. Извини, что зря потратил твоё время, я в игры просто не играю, короче, вот.
Yandex
Объявления
21.03.2010, 16:01     Передаём нажатия
Ответ Создать тему
Опции темы

Текущее время: 23:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru