Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Valorus
1

Хук мыши ломает ввод

28.10.2013, 20:20. Показов 930. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Пишу кликер для игры, но не суть. Написал хук клавы и мыши, оба работают, но: если хук поймает нажатие мыши, то указатель мыши просто исчезает. Внутри игры мышь по прежнему работает, вне игры курсор не отображается, а если закрыть игру, то курсор снова появляется. Вот код, раньше хуков не писал, профиль не мой. помогите, пожалуйста!
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <iostream>
using namespace std;
HHOOK hHook;
HHOOK mHook;
 
int int_1 , int_2, mouse_hold;
bool exitp = false;
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)
{
    if(wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)
    {   
        PKBDLLHOOKSTRUCT pKey = (PKBDLLHOOKSTRUCT)lParam;
        if(pKey->vkCode == 122) // 122 = F11
        {
            exitp = true;
        }
    }
    CallNextHookEx(hHook,nCode,wParam,lParam);
    if(exitp)
    {
        UnhookWindowsHookEx(hHook);
        UnhookWindowsHookEx(mHook);
    }
    return 0;
}
 
 
LRESULT CALLBACK MouseHook(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(nCode >= 0)
        if (wParam == WM_MBUTTONDOWN && wParam != WM_MOUSEMOVE)
        {
            DoCombo(int_1, int_2, mouse_hold);
        }
    CallNextHookEx(mHook,nCode,wParam,lParam);
    if(exitp)
    {
        UnhookWindowsHookEx(hHook);
        UnhookWindowsHookEx(mHook);
    }
    return 0;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    RegisterHotKey(NULL,0xB1AC7B1A,MOD_ALT,VK_F12);
    scanf("%i %i %i", &int_1, &int_2, &mouse_hold);
    HMODULE hInstance = GetModuleHandle(NULL);
    hHook = SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardProc,hInstance,NULL);
    mHook = SetWindowsHookEx(WH_MOUSE_LL,MouseHook,hInstance,NULL);
    MSG msg;
    GetMessage(&msg,NULL,NULL,NULL);
    UnhookWindowsHookEx(hHook);
    UnhookWindowsHookEx(mHook);
    UnregisterHotKey(NULL,0xB1AC7B1A);
    return 0;
}
 
void PressKey(DWORD keyCode)
{
    keybd_event(keyCode,0,0,0);
    keybd_event(keyCode,0,KEYEVENTF_KEYUP,0);
}
void PressMouse(int hold_msec)
{
    mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
    Sleep(hold_msec);
    mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
}
void DoCombo(int interval_1, int interval_2, int mouse_hold_interval)
{
    PressKey(0x31); //1
    PressMouse(mouse_hold_interval);
    Sleep(interval_1);
 
    PressKey(0x32);//2
    PressMouse(mouse_hold_interval);
    Sleep(interval_2);
 
    PressKey(0x33);//3
    PressMouse(mouse_hold_interval);
}
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2013, 20:20
Ответы с готовыми решениями:

Глобальный хук мыши
Ребят подскажите пожалуйста где у меня ошибка почему при нажатиии мыши у меня не срабатывает моя...

Хук на низкоуровневый ввод с клавиатуры
C++ DLL существует структура, которая описывает состояние клавиш Shift и CapsLook (для учёта...

Хук на кнопку мыши
Собственно нужно проверить, нажата ли в момент проверки кнопка мыши. Именно физически: нажата...

Глобальный хук мыши
Подскажите, пожалуйста, почему при таком способе перехвата событий мыши, курсор(не самой игры, а...

1
2 / 2 / 0
Регистрация: 25.09.2012
Сообщений: 148
02.11.2015, 13:21 2
Я думаю что дело в sleep.
Попробуй убрать sleep.
0
02.11.2015, 13:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2015, 13:21
Помогаю со студенческими работами здесь

Хук на клик мыши
Помогите разобраться пожалуйста!!! Нашел в инете код для dll, хука на отлов клика мыши, но не могу...

Хук на перемещение мыши
Помогите написать простой глобальный хук на мышь, чтобы при перемешивании мыши срабатывал контрол,...

Глобал хук мыши
Добрый день! У меня имеется глобал хук клавиатуры, сейчас мне понадобилось добавить хук мыши,...

Глобальный хук для мыши
Суть проблемы такова: Имеется прога, при нажатии на Button (при условии выбора определенной строки...


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

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