Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 10.01.2010
Сообщений: 91
1

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

16.03.2010, 15:03. Показов 3974. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех читателей!
У меня такая проблема образовалась. Вообщем надо другому приложению (игре допустим) передать нажатия клавиш (например "r").

Как такое возможно реализовать? Пожалуйста, если не затруднит, помоги. Примеры приветствуются.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2010, 15:03
Ответы с готовыми решениями:

Почему в качестве параметра метода main() мы передаём пустой строчный массив?
Добрый Вечер!!! Скажите Пожалуйста, почему в качестве параметра метода main() мы передаём пустой...

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

Отлов нажатия кнопки submit и блокировка последующего нажатия
Привет всем! Нужен код, который способствует блокировке нажатия кнопки после одного нажатия на...

Побуквенный вывод слова через цикл + ожидания нажатия клавиши (после нажатия очистка и установка курсора на )
строку) Masm32 (com -программа) вообщем столкнулся с проблемой. к примеру ввожу ' LSD49 $'...

27
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
16.03.2010, 15:10 2
другому? откуда?
char ch = getch();
switch(ch){
case ...
...
}
можно в файл записывать, считывать оттуда и очищать файл..
0
0 / 0 / 1
Регистрация: 10.01.2010
Сообщений: 91
16.03.2010, 15:39  [ТС] 3
из консольного приложения на си++
и можно примерчик поподробнее? я новичёк, осваиваю
0
paladin
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
16.03.2010, 15:56 4
SendMessage, PostMessage функции для передачи данных подобного рода приложениям в Windows.
Дальше разбираться с параметрами. Справка. Желательно знание английского.
0
0 / 0 / 1
Регистрация: 10.01.2010
Сообщений: 91
16.03.2010, 21:26  [ТС] 5
Вообщем надо передать окну (программе), например будет называться "MyGame" нажатие клавишы ESC.
Помогите, пожалуйста, такое реализовать. Уже читал про Send(Post)Message, но так и не дошло до меня
Заранее благодарен.
0
paladin
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
17.03.2010, 12:47 6
Вам потребуется handle окна, обрабатывающего нажатия.

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

WM_KEYDOWN
WM_KEYUP
WM_SYSKEYDOWN
WM_SYSKEYUP

lParam, wParam - хорошо разжеваны в справке.
Тут много ссылок по работе с клавиатурой. English!
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
17.03.2010, 16:57 7
Имитация клавишь в другом окне

Читать вдумчиво.
Принимаю подуманные вопросы.
1
0 / 0 / 1
Регистрация: 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);
но клавиши так и не отсылаются... помогите, а...
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
21.03.2010, 13:52 9
ЭТо пробуй
0
0 / 0 / 1
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 14:43  [ТС] 10
разница небольшая, чесно сказать никакой...
похоже у меня не то окно найдено... т.к. ставлю окно, например, на оперу - всё ок, передаётся. нужна помощь с поиском окошечка фул скрин GTA:SA:MP
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
21.03.2010, 14:52 11
Ну я даже не знаю, что сказать.
Слушай, сперва попробуй найди идентификатор окна проверенными методами.

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

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

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

Это первое что надо выяснить
такс, а что мне делать, если игра фулл скрин?
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
21.03.2010, 15:52 18
Честно говоря, я не знаю, что такое фулл скрин...
0
0 / 0 / 1
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 15:53  [ТС] 19
ну, всмысле, игра на весь экран. и я, соответственно, не вижу окна программы
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
21.03.2010, 16:01 20
Слушай, я этого не учёл. Тогда тебе таким образом, конечно, не найти хэндл окна игры. Извини, что зря потратил твоё время, я в игры просто не играю, короче, вот.
0
21.03.2010, 16:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2010, 16:01
Помогаю со студенческими работами здесь

По событию нажатия на кнопку вызвать функцию, в которой ждать нового нажатия на ту же самую кнопку
type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); ...

проверка нажатия
Добрый день, подскажите как проверить было ли нажатие мыши на объект?

Нажатия клавиш
В mfc нужно чтобы при нажатии клавиш, происходило действие. С помощью WM_KEYDOWN, пытался сделать,...

Обработка нажатия
Есть игра (для сенсорных устройств), управление в которой осуществляется нажатием в определенную...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru