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

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

Войти
Регистрация
Восстановить пароль
 
DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 246
#1

Отправка нажатий в не активное окно игры - C++

19.07.2014, 20:58. Просмотров 276. Ответов 4
Метки нет (Все метки)

пишу небольшую програмку. требуеться отправлять нажатия в не активное окно игры
использую вот такой код
конструктор для хранения данных
C++
1
2
3
4
5
struct KeyCom
{
    int panel;
    int key;
};
и сам код который вызываеться
C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void Send::Key(KeyCom keydata)
{
    short vkCode;
    if (keydata.panel == 0)//num
    {
        if ((keydata.key > 0) && (keydata.key < 10)){
            vkCode = LOBYTE(VkKeyScan(0x30 + keydata.key));
        }
        else if (keydata.key == 10){
            vkCode = LOBYTE(VkKeyScan(0x30));
        }
        else if (keydata.key == 11){
            vkCode = LOBYTE(VkKeyScan('-'));
        }
        else if (keydata.key == 12){
            vkCode = LOBYTE(VkKeyScan('='));
        }
        else
        {
            return;
        }
        
    }
    else if (keydata.panel == 1)// F
    {
        vkCode = LOBYTE(VkKeyScan(0x70 - 1 + keydata.key));
    }
 
    extraKeyInfo lParam = {};
    lParam.scanCode = MapVirtualKey(vkCode, MAPVK_VK_TO_VSC);
 
    PostMessage(hWnd, WM_KEYDOWN, vkCode, lParam);
 
    lParam.repeatCount = 1;
    lParam.prevKeyState = true;
    lParam.transitionState = true;
 
    PostMessage(hWnd, WM_KEYUP, vkCode, lParam);
}
к сожелению функция работает только на половину а именно нажатия кнопок 1...9 работают (это когда keydata.panel == 0)
а вот когда дело доходит до клавиш F1...F12 (это когда keydata.panel == 1) то уже не чего не происходит

Добавлено через 1 минуту
P.S. ув. администрация форума, не нужно переносность эту тему в раздел "программирование игр" ботстроение и геймдев разные вещи
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2014, 20:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отправка нажатий в не активное окно игры (C++):

сделать окно не активное - C++
господа как програмно сделать что бы окно было активное и не активное? Заранее спасибо!!!

Отлов нажатий клавиш в системе и отправка на email - C++
Всем доброе время суток. Ребята нужна помощь... нада зделать клавиатурный шпион.. но так чтоб он присилал дание по майлу... тоисть с...

Отслеживание нажатий клавиш, когда окно программы не в фокусе - C++
Доброго времени суток, цель - написать программу, выполняющую код функции (напишу самостоятельно) по нажатию клавиши. Функций должно быть...

Как отправить текст в окно игры, не активируя его при этом? - C++
Поиск hwnd не дает результатов, так как находит только один, который с window name. А как реализованы остальные? С помощью directx или...

Как сделать так, что бы после начала игры, активным было OpenGL-окно, а не консольное? - C++
Всем привет, у Меня тут такая проблемка, даже не знаю как искать ее решение в гугле, вот и решил написать сюда. Я написал игру на с++...

Отправка нажатий клавиш в неактивное окно - SendMessage - C#
Доброго времени суток, пытаюсь реализовать отправку нажатий клавиш/кликов в окно игры, но возникает проблема: С помощью spy++ не удается...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nonedark2008
908 / 647 / 134
Регистрация: 28.07.2012
Сообщений: 1,758
19.07.2014, 21:45 #2
удалено

Добавлено через 7 минут
Кнопки F1-F12 не имеют символьных кодов. Думаю проблема именно в этом.
Посмотри, что возвращает функция VkKeyScan.
DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 246
19.07.2014, 21:53  [ТС] #3
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Посмотри, что возвращает функция VkKeyScan.
0xffff
nonedark2008
908 / 647 / 134
Регистрация: 28.07.2012
Сообщений: 1,758
19.07.2014, 21:56 #4
Цитата Сообщение от DELAKEY Посмотреть сообщение
0xffff
Если прочитать описания функции с MSDN:
"If the function finds no key that translates to the passed character code, both the low-order and high-order bytes contain –1."
Получается ты указываешь неверный код символа для транслирующей функции.
DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 246
19.07.2014, 22:43  [ТС] #5
сделал так... вроде работает не знаю на сколько верно
C++
1
vkCode = 0x70 - 1 + keydata.key;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2014, 22:43
Привет! Вот еще темы с ответами:

Отправка нажатий клавиш в окно стороннего приложения - C#
Есть код на C++, в нём реализован поиск нужного окна по известному классу, эмуляция нажатий клавиш именно в это окно, а также проверка...

Активное окно - jQuery
Глюк активного окна При наведении мыши на окно, картинка из серого становится цветным. Суть проблемы Если погонять по...

Активное окно (цикл) - VBScript/JScript
Всем привет. Возникла трудность в написании одного кода. Код работает правильно, вот только мне нужно его как-то остановить когда мне это...

Закрыть активное окно - Visual Basic
Как пограммно закрыть активное окно? Есть ли код?


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

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

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