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

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

Восстановить пароль Регистрация
 
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 244
19.07.2014, 20:58     Отправка нажатий в не активное окно игры #1
пишу небольшую програмку. требуеться отправлять нажатия в не активное окно игры
использую вот такой код
конструктор для хранения данных
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. ув. администрация форума, не нужно переносность эту тему в раздел "программирование игр" ботстроение и геймдев разные вещи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
19.07.2014, 21:45     Отправка нажатий в не активное окно игры #2
удалено

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

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