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

Не работает LowLevelMouseProc

30.11.2015, 13:20. Показов 429. Ответов 0

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#define WIN32_LEAN_AND_MEAN
#define _WIN32_WINNT 0x0500
#pragma comment(lib, "user32.lib")
 
#include <windows.h>
#include <stdio.h>
 
HHOOK hLowlevelProc;
bool breaked = false;
unsigned char keys[2] = { VK_LWIN, VK_TAB };
 
void SendKey()
{
    INPUT input[4];
 
    for (int i = 0; i <= 1; i++)
    {
        input[i].type = INPUT_KEYBOARD;
        input[i].ki.wVk = keys[i];
        input[i].ki.dwFlags = 0;
    }
    SendInput(2, input, sizeof(INPUT));
 
    for (int i = 0; i <= 1; i++)
    {
        input[i].ki.dwFlags = KEYEVENTF_KEYUP;
    }
    SendInput(2, input, sizeof(INPUT));
}
 
LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    MOUSEHOOKSTRUCT * pMouseStruct = (MOUSEHOOKSTRUCT *) lParam;
 
    if (pMouseStruct != NULL)
    {
        if (pMouseStruct->pt.x <= 10 && pMouseStruct->pt.y <= 10 && breaked == false) {
            SetForegroundWindow(GetConsoleWindow());
            SendKey();
            breaked = true;
        }
        else if (pMouseStruct->pt.x > 10 && pMouseStruct->pt.y > 10 && breaked)
        {
            breaked = false;
        }
 
        printf("Mouse position X = %d  Mouse Position Y = %d\n", pMouseStruct->pt.x, pMouseStruct->pt.y);
    }
 
    return CallNextHookEx(hLowlevelProc, nCode, wParam, lParam);
}
 
void MessageLoop()
{
    MSG message;
    while (GetMessage(&message, NULL, 0, 0) > 0)
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
}
 
DWORD WINAPI MouseDetect(LPVOID lpParm)
{
    HINSTANCE hInstance = GetModuleHandle(NULL);
 
    if (!hInstance)
    {
        return 1;
    }
 
    hLowlevelProc = SetWindowsHookEx(
        WH_MOUSE_LL,
        (HOOKPROC)LowLevelMouseProc,
        hInstance,
        NULL
        );
 
    MessageLoop();
    UnhookWindowsHookEx(hLowlevelProc);
 
    return 0;
}
 
int main(int argc, char** argv)
{
    //ShowWindow(GetConsoleWindow(), SW_HIDE);
 
    HANDLE hThread;
    DWORD dwThread;
 
    hThread = CreateThread(
        NULL,
        NULL,
        (LPTHREAD_START_ROUTINE)MouseDetect,
        (LPVOID)argv[0],
        NULL,
        &dwThread
        );
 
    if (hThread)
    {
        return WaitForSingleObject(hThread, INFINITE);
    }
    else
    {
        return 1;
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2015, 13:20
Ответы с готовыми решениями:

Приложение работает в Debug, странно работает в Release и не работает при билде
Действия выполняются на эмуляторе Pixel 2. Android 9.0. Если я запускаю приложение с конфигурацией...

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с...

При включении компа у меня не работает монитор, но нормально работает ТВ-выход
Уже несколько дней рву волосы на голове.... Такая проблемка: при включении компа у меня не...

Атрибут ALT не работает в выделенной области, хотя работает на всей картинке
&lt;html&gt; &lt;head&gt; &lt;title&gt;Атрибут ALT&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;center&gt; &lt;img...

0
30.11.2015, 13:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2015, 13:20
Помогаю со студенческими работами здесь

IE опять все портит, в 9 версии работает, а в остальных нет. не работает float
сайт http://gkantecreo.ru/ вверху в шапке слайдер в блоке div с css {float: left; padding-left:...

Из-за чего интернет работает на техникумовских компьютерах и не работает подключении к моему ноутбуку
В Техникуме есть разные компьютеры - для учителей - для студентов - библиотечные ...

не работает в ворде веб компонент,и скачав обновление ow 11 не работает все равно
проблема с веб элементами и обновлениями на них))

В Windows Forms некоректно работает метод, хотя в консоли работает правильно
//Данный метод должен заменять все элементы в массиве на 1, после найменьшего. public string...


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

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