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

Ловушки (Hook)

06.12.2011, 23:05. Показов 10191. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru