Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 19:00   #1
casusbelli
 
Регистрация: 10.02.2009
Сообщений: 3
По умолчанию Ловушки (Hook)

Нужна программа которая при нажатии Ctrl или Alt будет выводить звуковой сигнал, раньше ловушки не делал так что в коде ловушки совершенно не уверен, брал его из примеров которые возможно даже не рабочие..
Но проблема в том, что я не могу загрузить функцию, библиотека dll подключается, а указатели на функцию всегда равны 0х000000.. В интернете нашел возможную причину это преобразование имен, пришлось подключать def файл, тогда появились такие ошибки:
Def.def : error LNK2001: неразрешенный внешний символ "KeyboardHook"
fatal error LNK1120: 1 неразрешенных внешних элементов
Работаю я на Visual Studio 2010, если кто сможет помогите, может книгу какую-то посоветуете или статью..
Код программы:

Main:
Код:
#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:
Код:
#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:
Код:
LIBRARY "KeyboardHook"
EXPORTS KeyboardHook @1
casusbelli вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При установке ловушки на клавиатуру зависают приложения, запущенные от имени другого пользователя. _Lamer Visual C++ 2 22.11.2010 10:01
HOOK zumm Общие вопросы Delphi 2 29.03.2010 20:21
Hook... Roof Общие вопросы Delphi 5 06.11.2007 16:25
Hook off? Сильванович Михаил Win Api 1 03.04.2007 16:25