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

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

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

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

19.07.2014, 20:58. Просмотров 259. Ответов 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++ сделать окно не активное
Считывание нажатий на стрелки C++
Эмуляция нажатий клавиш клавиатуры C++
C++ Создать класс окно, используя композицию и иерархию, определить окно заголовком и кнопкой.
C++ Отлов нажатий клавиш в системе и отправка на email
Обработка нажатий клавиш с glfw C++
C++ Обработчик нажатий кнопки
C++ Как отправить текст в окно игры, не активируя его при этом?
C++ Пятнашки - Как сделать перехват нажатий клавиш в консоли
C++ Создать окно с кнопкой, закрывающей это окно
Ограничение нажатий на кнопку C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,521
19.07.2014, 21:45     Отправка нажатий в не активное окно игры #2
удалено

Добавлено через 7 минут
Кнопки F1-F12 не имеют символьных кодов. Думаю проблема именно в этом.
Посмотри, что возвращает функция VkKeyScan.
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 245
19.07.2014, 21:53  [ТС]     Отправка нажатий в не активное окно игры #3
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Посмотри, что возвращает функция VkKeyScan.
0xffff
nonedark2008
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,521
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
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 245
19.07.2014, 22:43  [ТС]     Отправка нажатий в не активное окно игры #5
сделал так... вроде работает не знаю на сколько верно
C++
1
vkCode = 0x70 - 1 + keydata.key;
Yandex
Объявления
19.07.2014, 22:43     Отправка нажатий в не активное окно игры
Ответ Создать тему
Опции темы

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