您的位置:首页 > 其它

vs2005 0xc0000142错误和KBDLLHOOKSTRUCT没有声明1

2012-08-05 15:48 609 查看
今天写了一个屏蔽win键的底层钩子程序, 用到了dllmain,想用dllmain下的 HINSTANCE hInstance给钩子传递 hInstance参数,dll写好了,主程序编译也没问题,但是在执行的时候出现0xc0000142错误,不懂得为什么,看来要看看dllmain了,最后只能删除dllmain用GetModuleHandle()获得句柄了,编译执行没问题了。

dll如下:

#ifndef WINVER

#define WINVER 0x0400

#endif

#ifndef _WIN32_WINNT

#define _WIN32_WINNT 0x0400

#endif//这几行放在#include<Windows.h>的前面啊 我晕,还有就是不加上面几行会报错找不到KBDLLHOOKSTRUCT 结构体的声明。

#include<Windows.h>

#include <TCHAR.H>

//#include<WinUser.h>

//#include<WindowsX.h>

/*#pragma data_seg("MySec")

#pragma data_seg()*/

HWND g_hwnd=NULL;

HHOOK g_hKeyBoard=NULL;

//HINSTANCE handle=NULL;

/*BOOL WINAPI DllMain(

HINSTANCE hInstance,

ULONG ulReason,

LPVOID Reserved

)

{

handle=hInstance;

}*/

LRESULT CALLBACK LowLevelKeyboardProc( int nCode,

WPARAM wParam,

LPARAM lParam

)

{

KBDLLHOOKSTRUCT* kb= (KBDLLHOOKSTRUCT *)lParam;

if(kb->vkCode==VK_LWIN)

return TRUE;

else

return CallNextHookEx(g_hKeyBoard,nCode,wParam,lParam);

}

void SetHookLL(HWND wnd)

{

g_hwnd=wnd;

g_hKeyBoard=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,

GetModuleHandle(_T("SetHookLL")),0);

}

def模块如下:

LIBRARY "SetHookLL"

EXPORTS

SetHookLL @2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐