qxtianlong 发表于 2007-1-11 17:37:26

Win屏蔽asm

感谢我的好友Jampe
HOOK部分代码,没有什么技术含量

/*--------------------------------------------------------------------*
*                              Win键屏蔽                            *
*                               qxtianlong                            *
*                            只是我研究学习之用                     *
*                                 无聊之作                            *
*                              2006/12/27                           *
*         如果有任何问题可以给我Email:[email protected]      *
*                        感谢所有帮助过我的朋友                     *
*                              第二人生俱乐部                         *
*---------------------------------------------------------------------*/

#define _WIN32_WINNT 0x0400         //使用PKBDLLHOOKSTRUCT结构必须包含
#include <Windows.h>
#include "hook.h"

HINSTANCE g_hInstance;

HHOOK g_hKeyboard;

//消息处理
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
        PKBDLLHOOKSTRUCT pKey;

        switch(nCode)
        {
                case HC_ACTION:
                        {
                                pKey = (PKBDLLHOOKSTRUCT)lParam;//初始化对象

                                switch(wParam)
                                {
                                case WM_KEYDOWN:
                                case WM_SYSKEYDOWN:
                                case WM_KEYUP:
                                case WM_SYSKEYUP:
                                        {
                                               if((pKey->vkCode == VK_LWIN) || (pKey->vkCode == VK_RWIN))//屏蔽win键
                                               {
                                                       return TRUE;
                                               }
                                        }
                                        break;
                       
                                default:
                                        {
                                                //什么都不干
                                        }
                                        break;
                                }
               
                        }//HC_ACTION
       
                default:
                        {
                                //什么都不干
                        }
                        break;
        }

        return CallNextHookEx(g_hKeyboard,nCode,wParam,lParam);//传给系统继续处理
}

//初始化钩子
void __declspec(dllexport)InitHOOK()
{
        g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hInstance, 0);//安装钩子
}

//卸载钩子
void __declspec(dllexport)StopHOOK()
{
    UnhookWindowsHookEx(g_hKeyboard);//卸载钩子
}

//主函数
BOOL WINAPI DllMain(HINSTANCE hinstDLL,
                  DWORD fdwReason,
                  LPVOID lpvReserved)
{
        g_hInstance = hinstDLL;//保存实例

        switch(fdwReason)
        {
        case DLL_PROCESS_ATTACH:
                {

                }
                break;
        case DLL_THREAD_ATTACH:
                {

                }
                break;
        case DLL_THREAD_DETACH:
                {

                }
                break;
        case DLL_PROCESS_DETACH:
                {

                }
                break;
        }

        return TRUE;
}

页: [1]
查看完整版本: Win屏蔽asm