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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
#1

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

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

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

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

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

Обработка нажатия клавиши UP - C++
enum key_codes {UP=38}; int_tmain (int argc, THCAR*argv) { keys() enum key_codes key; while (key!=27) { key=_getch(); if...

Звуковое сопровождение нажатия - C++
Ребят, подскажите пожалуйста, с чего начать если нужно написать программу для прерываний мыши под МС ДОС? Просто есть задание - написать...

Коды нажатия клавишь. - C++
#include'stdio.h' #include'conio.h' main() { int n; if(!(n=getch())) { n=getch(); } printf('%d

Проверка нажатия enter - C++
Добрый день. Подскажите, пожалуйста, как запретить в консоли при пустом вводе запретить нажатие клавиши enter? Но если пользователь что-то...

Имитация нажатия клавиш - C++
как только и не пытался всё выводит одну и туже ошибку, помогите начинающему c++ юзеру #include <iostream> #include <Windows.h> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
16.03.2010, 15:10 #2
другому? откуда?
char ch = getch();
switch(ch){
case ...
...
}
можно в файл записывать, считывать оттуда и очищать файл..
0
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.03.2010, 15:39  [ТС] #3
из консольного приложения на си++
и можно примерчик поподробнее? я новичёк, осваиваю
0
Yurii_74
paladin
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
16.03.2010, 15:56 #4
SendMessage, PostMessage функции для передачи данных подобного рода приложениям в Windows.
Дальше разбираться с параметрами. Справка. Желательно знание английского.
0
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.03.2010, 21:26  [ТС] #5
Вообщем надо передать окну (программе), например будет называться "MyGame" нажатие клавишы ESC.
Помогите, пожалуйста, такое реализовать. Уже читал про Send(Post)Message, но так и не дошло до меня
Заранее благодарен.
0
Yurii_74
paladin
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!
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
17.03.2010, 16:57 #7
Имитация клавишь в другом окне

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

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

...ТО есть я хочу сказать, что запросто может быть, что ты всё правильно находишь и шлёшь сообщение ФАКТИЧЕСКИ РАМКЕ ОКНА, которая называется "GTA:SA:MP", а ей всё равно
0
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
21.03.2010, 15:09  [ТС] #12
Цитата Сообщение от kravam Посмотреть сообщение
Скачай прогу, ссылку я давал установи её.
эмм, ссылки что-то не нашёл, а в сети проги этой не вижу... кинь куда-нибудь её, пожалуйста.
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
21.03.2010, 15:15 #13
Да, я не выкладывал ссылку. На, держи.
0
Вложения
Тип файла: 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) ? что с ним делать далее?
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
21.03.2010, 15:47 #15
Я бы на твоём месте открыл окошко "GTA:SA:MP" запустил бы прогу (там есть режим "РАзное"->"активный курсор") и курсором бы погонял над этим окном дабы убедиться в том, что сама надпись непосредственно "GTA:SA:MP" имеет один хэндл (в программе называется "указатель на память"), а то место НЕПОСРЕДСТВЕННО, куда тебе надо послать сообщение- другой хэндл.
НУ, или убедиться в обратном.

Это первое что надо выяснить
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2010, 15:47
Привет! Вот еще темы с ответами:

Ожидание нажатия клавиши - C++
А подскажите пожалуйста, как в С++ сделать так, чтобы программа, написанная в консольных приложениях, продолжала свою работу только после...

Имитация нажатия клавиши - C++
Может кто помочь сделать прогу что бы она просто нажимала кнопку "E" с интервалом, 0,1 секунда, и включалась\выключалась по нажатию, на...

ожидание нажатия пробела - C++
Добрый вечер, а может уже и ночь, помогите кому не лень, программа должна выполнять свою работу( в моем случае она издает сигналы кода...

Имитация нажатия кнопки - C++
как программно сымитировать нажатие кнопки в программе нужно нажать кнопку PgUp а на клавиатуре ее нет как это можно сделать


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.03.2010, 15:47
Ответ Создать тему
Опции темы

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