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

Ловушки (Hook)

06.12.2011, 23:05. Показов 10208. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна программа которая при нажатии Ctrl или Alt будет выводить звуковой сигнал, раньше ловушки не делал так что в коде ловушки совершенно не уверен, брал его из примеров которые возможно даже не рабочие..
Но проблема в том, что я не могу загрузить функцию, библиотека dll подключается, а указатели на функцию всегда равны 0х000000.. В интернете нашел возможную причину это преобразование имен, пришлось подключать def файл, тогда появились такие ошибки:
Def.def : error LNK2001: неразрешенный внешний символ "KeyboardHook"
fatal error LNK1120: 1 неразрешенных внешних элементов
Работаю я на Visual Studio 2010, если кто сможет помогите, может книгу какую-то посоветуете или статью..
Код программы:
Main:
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
#include <Windows.h>
HOOKPROC pKeyHook;
HHOOK hKeyHook;
LRESULT CALLBACK WinProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
    switch(msg)
    {
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
            break;
        }
    default:
        {
            return(DefWindowProc(hwnd,msg,wParam,lParam));
            break;
        }
    }
}
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int)
{
    MSG msg;
    WNDCLASSEX wc;
    memset(&wc,0,sizeof(wc));
    wc.cbSize=sizeof(wc);
    wc.style=CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW;
    wc.hInstance=hInst;
    wc.lpfnWndProc=WinProc;
    wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground=CreateSolidBrush(RGB(100,150,130));
    wc.lpszClassName=TEXT("MyClass");
    RegisterClassEx(&wc);
    HWND hwnd=CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("MyClass"),TEXT("WinApi Function"),
        WS_OVERLAPPEDWINDOW,150,120,900,500,NULL,NULL,hInst,NULL);
    HINSTANCE hd=LoadLibrary(TEXT("KeyboardHook"));
    HOOKPROC hookp=(HOOKPROC)GetProcAddress(hd,"KeyboardHook");
    HHOOK hook=SetWindowsHookEx(WH_KEYBOARD,hookp,hd,0);
    ShowWindow(hwnd,SW_NORMAL);
    ZeroMemory(&msg,sizeof(msg));
    while(msg.message!=WM_QUIT)
    {
        if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
    UnhookWindowsHookEx(hook);
    FreeLibrary(hd);
    return 0;
}
Keyboard.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
#include "stdafx.h"
#include <Windows.h>
extern "C" __declspec(dllexport)
    LRESULT CALLBACK KeyboardHook(int nCode,WPARAM wParam,LPARAM lParam)
{
    MessageBox(NULL,TEXT("Yuuuupiii"),TEXT("Hook"),MB_OK);
    if(nCode<0)
        CallNextHookEx(NULL,nCode,wParam,lParam);
    if ((lParam>>31)&1)
    {
        switch(wParam)
        {
        case VK_CONTROL:
            {
                MessageBeep(25);
                break;
            }
        case VK_MENU:
            {
                MessageBeep(-1);
                break;
            }
        }
    }
    return CallNextHookEx(NULL,nCode,wParam,lParam);
}
Def:
C++
1
2
LIBRARY "KeyboardHook"
EXPORTS KeyboardHook @1
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2011, 23:05
Ответы с готовыми решениями:

В чем преимущество trampoline hook над обычным hook?
Объясните пожалуйста в чем преимущество trampoline hook и hook? Никак не могу понять

Ловушки windows
Здравствуйте. Изучаю ловушки. Пытаюсь написать глобальную клавиатурную ловушку. Но при установке ловушки, любая программа, в которой я...

hook
моя работа заключается в написании сервиса с функцией контроля действий пользователя в системе.Как с помощью hooka решить данную...

7
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
06.12.2011, 23:38
можно почитать например это
Джеффри РИХТЕР. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной
глава 22
Возможно она несколько устарела, но в ней методы перехвата и внедрения dll имхо хорошо описаны. С примерами на c++.
1
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
06.12.2011, 23:54
C++
1
2
HINSTANCE hd=LoadLibrary(TEXT("hook.dll"));
HOOKPROC hookp=(HOOKPROC)GetProcAddress(hd,"_KeyboardHook@12");
1
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 4
07.12.2011, 00:20  [ТС]
Digit@ll, такой вариант пробовал, но не помогло, hookp присваивается 0х00000..
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
07.12.2011, 00:51
Пробуй: hook.rar
1
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 4
07.12.2011, 01:57  [ТС]
Digit@ll, Спасиб! Все заработало, ток можешь код выложить, я хоть разберусь там..
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
07.12.2011, 02:04
casusbelli, код целиком и полностью тот, что ты вылаживал, разница только в двух строках.
0
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 4
07.12.2011, 02:19  [ТС]
Digit@ll, я заинтригован, и в каких же строках?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2011, 02:19
Помогаю со студенческими работами здесь

Hook клавиатуры
Помогите мне пожалуйста с лабораторной работой, мне нужен хук клавиатуры в win32 VS, сама я не дружу с win32..

Hook функция
Решил потренироваться и поработать с hook функцией, запихнул ее вв dll, по идее все символы, полученные функцией должны записываться в...

Не работает Hook
Скажите,что я делаю неправильно? #include &lt;Windows.h&gt; HHOOK hook; HINSTANCE hIns; LRESULT CALLBACK KeyBrdProc(int nCode,...

Hook на recv
Здравствуйте. Есть необходимость узнать, что у пользователя в браузере. Добрый человек на хабре подсказал поставить хук на сетевые...

Hook клавиатуры и мыши
Я пересмотрел кучу сайтов по похожим запросам И нигде толком и понятно не написано выручайте люди.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru