|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 凌风破浪 于 2015-5-4 11:19 编辑
好多年以前写的一段小代码,很简单,是吧
- #include <stdio.h>
- #include <windows.h>
- HHOOK Mouse = 0;
- HHOOK KeyBoard = 0;
- LRESULT CALLBACK KeyProc( int code, WPARAM w, LPARAM l )
- {
- //简单打印
- printf( "%x\n", code );
- printf( ( w == WM_KEYDOWN ) ? "按下%c\n" : "抬起%c\n", ( (PKBDLLHOOKSTRUCT)l )->vkCode );
- printf( "%x,%x,%x,%x\n", ( (PKBDLLHOOKSTRUCT)l )->dwExtraInfo, ( (PKBDLLHOOKSTRUCT)l )->flags, ( (PKBDLLHOOKSTRUCT)l )->scanCode, ( (PKBDLLHOOKSTRUCT)l )->time );
- return CallNextHookEx( KeyBoard, code, w, l );
- }
- LRESULT CALLBACK MouseProc( int code, WPARAM w, LPARAM l )
- {
- //简单打印
- if( w == WM_LBUTTONDOWN ) printf( "按下左键\t" );
- else if( w == WM_LBUTTONUP ) printf( "抬起左键\t" );
- else if( w == WM_RBUTTONDOWN ) printf( "按下右键\t" );
- else if( w == WM_RBUTTONUP ) printf( "抬起右键\t" );
- else if( w == WM_MOUSEMOVE ) printf( "鼠标移动\t" );
- else printf( "未知按键\t" );
- printf( "x:%d\ty:%d\n", ( (PMSLLHOOKSTRUCT)l )->pt.x, ( (PMSLLHOOKSTRUCT)l )->pt.y );
- return CallNextHookEx( Mouse, code, w, l );
- }
- int main( void )
- {
- //注册钩子
- KeyBoard = SetWindowsHookEx( WH_KEYBOARD_LL, KeyProc, GetModuleHandle( NULL ), 0 );
- Mouse = SetWindowsHookEx( WH_MOUSE_LL, MouseProc, GetModuleHandle( NULL ), 0 );
- if( KeyBoard == NULL || Mouse == NULL )
- {
- printf( "安装钩子出错\n" );
- return 0;
- };
- //以下是WINDOWS循环,用来更新显示的,不用管它
- MSG msg;
- while( GetMessage( &msg, NULL, 0, 0 ) )
- {
- TranslateMessage( &msg );
- DispatchMessage( &msg );
- };
- //注销钩子
- UnhookWindowsHookEx( KeyBoard );
- UnhookWindowsHookEx( Mouse );
- return 0;
- };
复制代码
|
|