首页
社区
课程
招聘
[分享]小试钩子--制作灰色按钮克星
发表于: 2008-3-9 10:07 6037

[分享]小试钩子--制作灰色按钮克星

2008-3-9 10:07
6037
// Gray.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include <windows.h>
HHOOK g_hHook = NULL;//全局钩子函数句柄
BOOL __stdcall EnableAll(HWND hWnd, LPARAM lParam) {

        if (!IsWindowEnabled(hWnd)) {
                EnableWindow(hWnd, TRUE);
        }
        return TRUE;
}
//鼠标钩子函数

LRESULT CALLBACK HookProc( int code, WPARAM wParam,LPARAM lParam )
{
HWND hwnd;
POINT point;
GetCursorPos(&point);//得到鼠标位置
hwnd=WindowFromPoint(point);//得到包含鼠标的窗口句柄

EVENTMSG *event=(EVENTMSG *)lParam;
if(event->message==WM_LBUTTONDOWN)//是否为鼠标左键
{   
        hwnd = GetForegroundWindow();
    EnumChildWindows(hwnd,EnableAll, 0);

}
return CallNextHookEx(g_hHook,code,wParam,lParam);
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
        g_hHook=SetWindowsHookEx(WH_JOURNALRECORD,HookProc,GetModuleHandle(NULL),0);
    if(g_hHook)
                MessageBox(NULL,"加载钩子成功","OK",MB_OK);小弟水平有限,只好用MessageBox来阻止程序往下执行,这里不能点确定,否则程序就运行结束了,不知道有没有什么好的方法不用MessageBox,这样太丑陋了

UnhookWindowsHookEx(g_hHook);//卸载钩子

        return 0;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 287
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶一顶
看一看
不用试一试了
2008-3-10 19:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
g_hHook=SetWindowsHookEx(WH_JOURNALRECORD,HookProc,GetModuleHandle(NULL),0);

全局Hook的HookProc不是必须位于DLL中吗?
2008-3-10 19:24
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
4
g_hHook=SetWindowsHookEx(WH_JOURNALRECORD,HookProc,GetModuleHandle(NULL),0);

全局Hook的HookProc不是必须位于DLL中吗?


看到GetModuleHandle(NULL)这句了吗,意思是把自身作为返回的DLL
2008-3-10 21:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我用的是Vista,在VS2008下编译,无法成功HOOK。
2008-3-10 23:40
0
游客
登录 | 注册 方可回帖
返回