HOOK

/**
*Environment : VS2005
*/

DLL:
File name:HookDll.ccp


=============================================
#include <windows.h>
#include "string.h"
#include "stdio.h"

HINSTANCE hInst;

#pragma data_seg("hookdata")
HHOOK oldkeyhook=0;
#pragma data_seg()

#pragma comment(linker,"/SECTION:hookdata,RWS")

#define DllExport extern "C"__declspec(dllexport)
void writeFile1(char *msg);
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam );
DllExport void InstallHook(int nCode);
DllExport void EndHook(void);

BOOL WINAPI DllMain(HINSTANCE hInstance,ULONG What,LPVOID NotUsed)
{
switch(What)
{
case DLL_PROCESS_ATTACH:
hInst = hInstance;
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;

}
return 1;
}

void InstallHook(int nCode)
{
oldkeyhook = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyBoardProc,hInst,0);
}

DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam )
{
/*
WPARAM j;
FILE *fp;
errno_t err;
if(lParam&0x80000000)
{
j = wParam;
err=fopen_s(&fp,"c:\hookkey.txt","a");
fprintf(fp,"%4d",j);
fclose(fp);
}
*/
writeFile1("callback function invoked");
return CallNextHookEx(oldkeyhook,nCode,wParam,lParam);
}
void EndHook(void)
{
UnhookWindowsHookEx(oldkeyhook);
}
void writeFile1(char *msg){

FILE *fp;
fp=fopen("C:/test1.txt","a");
fputs(msg,fp);
fputs("\n",fp);
fclose(fp);

}

=================================================
testing
File name:hookTest.ccp

=================================================


#include "stdio.h"
#include <windows.h>

void main(void)
{

typedef void(*installHook)(int ncode);
typedef void(*killHook)(void);
HINSTANCE hDLL; installHook iHook; killHook kHook;
hDLL=LoadLibrary(TEXT("hookdll2.dll"));
if(hDLL!=NULL){
MessageBox (NULL, TEXT ("Hello, Windows 00000000000!"), TEXT ("HelloMsg"), 0);
iHook=(installHook)GetProcAddress(hDLL,"InstallHook");
kHook=(killHook)GetProcAddress(hDLL,"EndHook");
if(iHook){
MessageBox (NULL, TEXT ("Hello, Windows 11111111111111!"), TEXT ("HelloMsg"), 0);
iHook(0);
}
if(kHook){
MessageBox (NULL, TEXT ("Hello, Windows 2222222222222222!"), TEXT ("HelloMsg"), 0);
kHook();
}
FreeLibrary(hDLL);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值