getdlgitem showwindow_enablewindow showwindow_enablewindow f(4)

电脑杂谈  发布时间:2017-01-22 04:03:51  来源:网络整理

wParam:传送给钩子进程的wParam参数值,参数值的具体含义与当前钩子链的挂接的钩子类型有关

lParam:传送给钩子进程的wParam参数值,参数值的具体含义与当前钩子链的挂接的钩子类型有关

返回值:返回值是链中下一个钩子进程返回的值,当前钩子进程必须返回这个值,返回值的具体含义与挂接的钩子类型有关,详细信息请参看具体的钩子进程描述。

V建立一个动态连接库(DLL)

当我们熟悉了以上的各个函数后,现在我们开始编写一个动态连接库(DLL)。在这儿我采用的是WIN32DLL,而不是MFCDLL。而且以下所有的

程序也都是采用C语言去编写。这主要是因为使用WIN32API能够更详细、更全面的控制程序的如何执行,而使用MFC,一些低级的控制是不可能实现的

(当然,仅对该程序来说,也是可以使用MFC的)。

1:建立一个动态连接库的.cpp文件。比如我们现在建立一个名为hookdll.cpp的文件。在hookdll.cpp的文件中加上如下内容:

#include<windows.h>

#include"string.h"

#include"stdio.h"

HINSTANCEhInst;

#pragmadata_seg("hookdata")

HHOOKoldkeyhook=0;

#pragmadata_seg()

#pragmacomment(linker,"/SECTION:hookdata,RWS")

#defineDllExportextern"C"__declspec(dllexport)

DllExportLRESULTCALLBACKKeyBoardProc(intnCode,WPARAMwParam,LPARAMlParam);

DllExportvoidInstallHook(intnCode);

DllExportvoidEndHook(void);

BOOLWINAPIDllMain(HINSTANCEhInstance,ULONGWhat,LPVOIDNotUsed)

{

switch(What)

{

caseDLL_PROCESS_ATTACH:

hInst=hInstance;

break;

caseDLL_PROCESS_DETACH:

break;

caseDLL_THREAD_ATTACH:

break;

caseDLL_THREAD_DETACH:

break;

}

return1;

}

voidInstallHook(intnCode)

{

oldkeyhook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyBoardProc,hInst,0);

}

DllExportLRESULTCALLBACKKeyBoardProc(intnCode,WPARAMwParam,LPARAMlParam)

{

WPARAMj;

FILE*fp;

if(lParam&080000000)

{

j=wParam;

fp=fopen("c:\\hook\\key.txt","a");

fprintf(fp,"%4d",j);

fclose(fp);

}

returnCallNextHookEx(oldkeyhook,nCode,wParam,lParam);

}

voidEndHook(void)


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-27965-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...