第一步,建一DLL,DELPHI中NEW-DLLSAVEASGETKEYlibrarygetKey;uses

SysUtils,

Windows,

HookMaininhookmain。pas;exports

OpenGetKeyHook,论文网>

CloseGetKeyHook,

GetPublicP;begin

NextHook:=0;

procSaveExit:=ExitProc;

DLLproc:=@DLLMain;

ExitProc:=@HookExit;

DLLMain(DLL_PROCESS_ATTACH);

end。第二步,建一UNIT,HOOKMAIN。关键在于CreateFileMapping和消息WM_NCMouseMove,WM_MOUSEMOVE:unitHookMain;interface

usesWindows,Messages,Dialogs,SysUtils;//typeDataBuf=Array[1。。2]ofDWORD;

typemydata=record

data1:array[1。。2]ofDWORD;

data2:TMOUSEHOOKSTRUCT;

end;

varhObject:Thandle;

pMem:Pointer;

NextHook:Hhook;

procSaveExit:Pointer;functionHookHandler(iCode:Integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;export;

functionOpenGetKeyHook(sender:HWND;MessageID:WORD):BOOL;export;

functionCloseGetKeyHook:BOOL;export;

functionGetPublicP:Pointer;stdcall;export;

ProcedureDLLMain(dwReason:Dword);far;

procedureHookExit;far;implementationProcedureUnMapMem;

begin

ifAssigned(pMem)then

begin

UnMapViewOfFile(pMem);

pMem:=Nil

end;

end;ProcedureMapMem;

begin

hObject:=CreateFileMapping($FFFFFFFF,Nil,Page_ReadWrite,0,$FFFF,pChar(_IOBuffer));

ifhObject=0thenRaiseException。Create(创建公用数据的Buffer不成?;

pMem:=MapViewOfFile(hObject,FILE_MAP_WRITE,0,0,SizeOf(mydata));

//1orSizeOf(DataBuf)????

//创建SizeOf(DataBuf)的数据区

ifnotAssigned(pMem)then

begin

UnMapMem;

RaiseException。Create(创建公用数据的映射关系不成功!);

end;

end;

ProcedureDLLMain(dwReason:Dword);far;

begin

CasedwReasonof

DLL_PROCESS_ATTACH:

begin

pMem:=nil;

hObject:=0;

MapMem;//以下的公有数据,如tHWND,tMessageID将直接使用本Buf。

End;

DLL_PROCESS_DETACH:UnMapMem;

DLL_THREAD_ATTACH,

DLL_THREAD_DETACH:;//缺省

end;

end;procedureHookExit;far;

begin

CloseGetKeyHook;

ExitProc:=procSaveExit;

end;functionGetPublicP:Pointer;export;

begin//这里引出了公用数据区的指针,你可以在你的应用程序中自由操作它。但建议去掉此接口。

Result:=pMem;

end;functionHookHandler(iCode:Integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;export;

begin

Result:=0;

IfiCode$#@60;0

ThenResult:=CallNextHookEx(NextHook,iCode,wParam,lParam);

//Thisisprobablyclosertowhatyouwouldwanttodo。。。

Casewparamof

WM_LBUTTONDOWN:

begin

end;

WM_LBUTTONUP:

begin

end;

WM_LBUTTONDBLCLK:

begin

end;

WM_RBUTTONDOWN:

begin

messagebeep(1);

end;

WM_RBUTTONUP:

begin

end;

WM_RBUTTONDBLCLK:

begin

end;

WM_MBUTTONDOWN:

begin

end;

WM_MBUTTONUP:

begin

end;

WM_MBUTTONDBLCLK:

[1][2]下一页

上一篇:茬RedHat中使用ReiserFS文件系统【1804字】
下一篇:茬虚拟现实系统构建過程中使用3DS【2284字】

高职院校公共机房的管理维护【2471字】

高级RFID阅读器應用對处理器的要求【1354字】

风机风量自动报警装置【517字】

项目管理茬软件中的應用【5351字】

随机型存储模型應用研究【1393字】

间谍软件之危害及其防范對策【1382字】

银行行办公信息服务系统【1544字】

新課改下小學语文洧效阅...

安康汉江网讯

麦秸秆还田和沼液灌溉对...

张洁小说《无字》中的女性意识

ASP.net+sqlserver企业设备管理系统设计与开发

我国风险投资的发展现状问题及对策分析

互联网教育”变革路径研究进展【7972字】

老年2型糖尿病患者运动疗...

网络语言“XX体”研究

LiMn1-xFexPO4正极材料合成及充放电性能研究