在应用程序中跟踪MOUSE的坐标

时间:2020-10-07 15:00:13 计算机网络毕业论文 我要投稿

在应用程序中跟踪MOUSE的坐标

在应用程序中跟踪MOUSE的坐标

第一步,建一DLL,DELPHI中NEW-》DLL SAVE AS GETKEYlibrary getKey;uses
SysUtils,
Windows,
HookMain in hookmain.pas;exports
OpenGetKeyHook,
CloseGetKeyHook,
GetPublicP;begin
NextHook := 0;
procSaveExit := ExitProc;
DLLproc := @DLLMain;
ExitProc := @HookExit;
DLLMain(DLL_PROCESS_ATTACH);
end.第二步,建一UNIT ,HOOK MAIN。关键在于CreateFileMapping 和 消息 WM_NCMouseMove, WM_MOUSEMOVE:unit HookMain; interface
uses Windows, Messages, Dialogs, SysUtils; //type DataBuf = Array of DWORD;
type mydata=record
data1:array of DWORD;
data2:TMOUSEHOOKSTRUCT;
end;
var hObject : Thandle;
pMem : Pointer;
NextHook: Hhook;
procSaveExit: Pointer; function HookHandler(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;
function OpenGetKeyHook(sender : HWND;MessageID : WORD) : BOOL; export;
function CloseGetKeyHook: BOOL; export;
function GetPublicP : Pointer;stdcall; export;
Procedure DLLMain(dwReason:Dword); far;
procedure HookExit; far; implementation Procedure UnMapMem;
begin
if Assigned(pMem) then
begin
UnMapViewOfFile(pMem);
pMem := Nil
end;
end; Procedure MapMem;
begin
hObject := CreateFileMapping($FFFFFFFF,Nil,Page_ReadWrite,0,$FFFF,pChar(_IOBuffer));
if hObject = 0 then Raise Exception.Create(创建公用数据的Buffer不成? ;
pMem := MapViewOfFile(hObject,FILE_MAP_WRITE,0,0,SizeOf(mydata));
// 1 or SizeOf(DataBuf) ????
// 创建SizeOf(DataBuf)的数据区
if not Assigned(pMem) then
begin
UnMapMem;
Raise Exception.Create(创建公用数据的`映射关系不成功!);
end;
end;
Procedure DLLMain(dwReason:Dword); far;
begin
Case dwReason of
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; procedure HookExit; far;
begin
CloseGetKeyHook;
ExitProc := procSaveExit;
end;function GetPublicP : Pointer;export;
begin //这里引出了公用数据区的指针,你可以在你的应用程序中自由操作它。但建议去掉此接口。
Result := pMem;
end;function HookHandler(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;
begin
Result := 0;
If iCode $#@60; 0
Then Result := CallNextHookEx(NextHook, iCode, wParam, lParam);
// This is probably closer to what you would want to do...
Case wparam of
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:

下一页

【在应用程序中跟踪MOUSE的坐标】相关文章:

1.excel中输入的坐标怎么在CAD中画图

2.如何利用EXCEL输入坐标在CAD中画线

3.跟踪审计在医院建设的应用

4.数控编程中的极坐标功能

5.CAD中查询交点的坐标的方法

6.影视后期制作中的跟踪技术

7.CAD坐标和坐标系的设置方法

8.采购单跟踪流程

9.找到自己的坐标最重要