Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
softrix
0 / 0 / 0
Регистрация: 05.04.2008
Сообщений: 48
#1

Хуки мыши - C++

15.03.2010, 15:59. Просмотров 943. Ответов 0
Метки нет (Все метки)

Такая проблема, пытаюсь написать хук для мыши, вроде событие отлавливается, библиотека отлично подключается, но функция которая должна возвращать указатель на структуру MOUSEHOOKSTRUCT, возвращает структуру вверх ногами, координаты мыши почему-то лежат в параметрах wHitTestCode и dwExtraInfo, а в x,y лежит int значение, похожее на указатель, код dll выглядит так

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
//mhook.h
#include <windows.h>
#include <iostream>
 
#pragma data_seg("SHARDATA")
DWORD g_dwThreadIdDIPS = 0;
static WPARAM g_wParam = NULL;
static LPARAM g_lParam = NULL;
static MOUSEHOOKSTRUCT *mmh;
#pragma data_seg()
 
extern "C" _declspec(dllexport) LRESULT CALLBACK LowLevelMouseProc(int , WPARAM , LPARAM );
 extern "C" _declspec(dllexport) LPARAM KC(LPARAM lp);
 
 
//mhook.cpp
#include "mydll2.h"
#pragma comment(linker, "/section:SHARDATA,rws")
#ifdef _MANAGED
#pragma managed(push, off)
#endif
 
HINSTANCE g_hinstDll = NULL;
 
HHOOK g_hhook = NULL;
 
static void Init()
{
    g_hhook = SetWindowsHookEx( WH_MOUSE_LL, (HOOKPROC)LowLevelMouseProc, (HINSTANCE)g_hinstDll, 0 );
}
 
 static void Cleanup()
{
    if( g_hhook != NULL )
        UnhookWindowsHookEx( g_hhook );
 
    g_hhook = NULL;
}
 
BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad) {
 
   switch (fdwReason) {
 
      case DLL_PROCESS_ATTACH:
         // DLL is attaching to the address space of the current process.
         g_hinstDll = hinstDll;
         Init();
         break;
        case DLL_PROCESS_DETACH:
            Cleanup();
        return TRUE;
   }
   return(TRUE);
} 
 
 
 extern "C" _declspec(dllexport) LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
        if (nCode < 0)  // do not process message 
            return CallNextHookEx(g_hhook, nCode, wParam, lParam);
 
    mmh = reinterpret_cast<MOUSEHOOKSTRUCT *>(lParam);
    //int n = mh->pt.x;
 
    g_wParam = wParam;
    g_lParam = lParam;
    if(wParam = WM_MOUSEMOVE) 
    {
        int yy=0;
    }
 
return  CallNextHookEx(g_hhook, nCode, wParam, lParam); 
}
 
 extern "C" _declspec(dllexport) LPARAM KC(LPARAM lp)
{
    if(g_wParam != NULL && g_lParam != NULL)
    {
        lp = g_lParam ;
        MOUSEHOOKSTRUCT *tmh = mmh;
        MOUSEHOOKSTRUCT *mh = (MOUSEHOOKSTRUCT *) g_lParam;
        int n = mh->pt.x;
 
        g_wParam = NULL;
        g_lParam = NULL;
        return lp;
    }
    return 0;
}
 
#ifdef _MANAGED
#pragma managed(pop)
#endif
И так и сяк эксперементировал, все равно значение не верное, не понятно в чем дело... ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2010, 15:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хуки мыши (C++):

Блокировка мыши по оси y - C++
Здравствуйте! Нужно решить задачу: Вычислять текущую позицию по оси y, и при нажатии ctrl(control)+1 блокировать мышь по этой оси, т.е...

Отслеживание действий мыши - C++
Всем привет, хотелось бы сделать хук на мышь, не подскажете литературу или методы существующие Спасибо

Клик мыши в неактивном окне - C++
Открыто окно Opera, свёрнут Google Chrome Мы запускаем программу, которая должна кликнуть по координатам x, y в свёрнутом окне Google...

Взаимосвязь правой кнопки мыши с функцией getch - C++
Доброго времени суток! Перед тем, как описать суть проблемы, небольшой ввод: в своем проекте (консольная игрушка) использую функцию getch,...

Нужна программа для перехвата клика мыши - C++
Стоит задача: Когда я нажимаю ЛКМ нужно, чтобы программа перехватила это нажатие, и нажала лишь когда истечет определенное кол-во...

HotRegKey или хуки - C++ Builder
Всем доброго времени суток. Кто может подсказать что использовать для захвата нажатия клавиш, при том условие что окно не активно. (Захват...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2010, 15:59
Привет! Вот еще темы с ответами:

Хуки (блокировка нажатия кнопок) - C++ Builder
Здравствуйте уважаемые форумчанины. Есть много материала про &quot;кей логеры&quot;, мой же вопрос касается реализации, блокировки нажатия...

Chart как показывать координаты мыши по графику возле курсора мыши! - C++ Builder
Chart как показывать координаты мыши по графику возле курсора мыши! Когда двигаешь мышкой по графику координаты обновлялись!

Вывести поточные координаты курсора мыши относительно формы и экрана, при нажатии на кнопку-реверсное изменение кнопок мыши C++ - C++ Builder
доброй ночи, уважаемые программисты, умные школьники, преуспевающие студенты, а также все участники этого форума. помогите, пожалуйста,...

Перехват мыши - C++ Builder
Всем привет! Вообщем стоит задача, использовать одну мышь, на два (мб и более) PC, за основной интерфейс взаимодействия между машинами...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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