利用 windows 鉤子 監聽鍵盤輸入
本來是想做鍵盤映射的,沒能實現,現在只是鍵盤監聽而已,求指導。。。
動態鏈接庫代碼:
1

/**//*2
KeyMapDll.h3

4
Copyright (C) 2011, coreBugZJ, all rights reserved.5

6
鍵盤映射 動態鏈接庫部分7
*/8

9

10
#ifndef __KEYMAPDLL_H_INCLUDED__11
#define __KEYMAPDLL_H_INCLUDED__12

13

14
#ifdef KEYMAP15
#define KEYMAPAPI __declspec(dllexport)16
#else17
#define KEYMAPAPI __declspec(dllimport)18
#endif19

20

21

/**//* 執行成功,返回 TRUE */22
BOOL KEYMAPAPI WINAPI startKeyMap();23

/**//* 執行成功,返回 TRUE */24
BOOL KEYMAPAPI WINAPI stopKeyMap();25

26

27
#endif28

1

/**//*2
KeyMapDll.cpp3

4
Copyright (C) 2011, coreBugZJ, all rights reserved.5

6
鍵盤映射 動態鏈接庫部分7
*/8

9

10
#define KEYMAP11

12

13
#include <Windows.h>14
#include "KeyMapDll.h"15

16

17
#pragma data_seg("KeyMapShare")18
HHOOK hHook = NULL;19
#pragma data_seg()20

21

22

LRESULT CALLBACK KeyProc( INT code, WPARAM wParam, LPARAM lParam )
{23

if ( (0 > code) || (HC_NOREMOVE == code) )
{24
return ::CallNextHookEx( hHook, code, wParam, lParam );25
}26

/**//*27
// 監聽鍵盤28
switch ( wParam ) {29
case 虛擬鍵碼 : 30
}31
*/32
return ::CallNextHookEx( hHook, code, wParam, lParam );33
}34

35

BOOL KEYMAPAPI WINAPI startKeyMap()
{36
MEMORY_BASIC_INFORMATION mbi;37
HMODULE hModule;38

if ( NULL != hHook )
{39
return TRUE;40
}41

if ( 0 == ::VirtualQuery( KeyProc, &mbi, sizeof(mbi) ) )
{42
return FALSE;43
}44
hModule = (HMODULE)mbi.AllocationBase;45
hHook = ::SetWindowsHookEx( WH_KEYBOARD, KeyProc, hModule, 0 );46
return ( NULL != hHook );47
}48

49

BOOL KEYMAPAPI WINAPI stopKeyMap()
{50
BOOL res;51

if ( NULL == hHook )
{52
return TRUE;53
}54
res = ::UnhookWindowsHookEx( hHook );55
hHook = NULL;56
return res;57
}58

1
LIBRARY KeyMapDll2
EXPORTS3
startKeyMap4
stopKeyMap5
SECTIONS6
KeyMapShare Read Write Shared7

啟動部分:
1

/**//*2
KeyMap.cpp3

4
Copyright (C) 2011, coreBugZJ, all rights reserved.5

6
鍵盤映射 應用程序部分7
*/8

9

10
#include <Windows.h>11
#include "KeyMapDll.h"12
#include <stdio.h>13

14

15
#pragma comment( lib, "KeyMapDll.lib" )16

17

18

int main()
{19
startKeyMap();20
scanf( "%*c" );21
stopKeyMap();22
return 0;23
}24

posted on 2011-08-16 20:57 coreBugZJ 閱讀(1110) 評論(1) 編輯 收藏 引用 所屬分類: Windows 、Security

