- 相關(guān)推薦
在應(yīng)用程序中跟蹤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。關(guān)鍵在于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(創(chuàng)建公用數(shù)據(jù)的Buffer不成? ;
pMem := MapViewOfFile(hObject,FILE_MAP_WRITE,0,0,SizeOf(mydata));
// 1 or SizeOf(DataBuf) ????
// 創(chuàng)建SizeOf(DataBuf)的數(shù)據(jù)區(qū)
if not Assigned(pMem) then
begin
UnMapMem;
Raise Exception.Create(創(chuàng)建公用數(shù)據(jù)的映射關(guān)系不成功!);
end;
end;
Procedure DLLMain(dwReason:Dword); far;
begin
Case dwReason of
DLL_PROCESS_ATTACH :
begin
pMem := nil;
hObject := 0;
MapMem; //以下的公有數(shù)據(jù),如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 //這里引出了公用數(shù)據(jù)區(qū)的指針,你可以在你的應(yīng)用程序中自由操作它。但建議去掉此接口。
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:
下一頁
【在應(yīng)用程序中跟蹤MOUSE的坐標】相關(guān)文章:
跟蹤審計中存在題目及對策12-08
視頻圖像中的車輛檢測跟蹤和分類03-18
坐標系在化學(xué)教學(xué)中的運用的方式分析03-16
Blackfin系統(tǒng)引導(dǎo)過程中的多應(yīng)用程序管理03-07
淺析極坐標系與坐標旋轉(zhuǎn)11-30
實時操作系統(tǒng)VxWorks在跟蹤雷達系統(tǒng)中的應(yīng)用03-18
電源跟蹤技術(shù)03-19
成本管理的戰(zhàn)略坐標03-07
光學(xué)3D坐標測量技術(shù)在大齒輪在位測量中的應(yīng)用03-07
最新推薦
- CAD中查詢交點的坐標的方法
- 探析網(wǎng)絡(luò)環(huán)境下的學(xué)習(xí)策略研究
- 高職計算機網(wǎng)絡(luò)技術(shù)探討
- 基于全景圖的虛擬現(xiàn)實系統(tǒng)研究
- 計算機網(wǎng)絡(luò)可靠性分析
- 淺談網(wǎng)絡(luò)信息時代對高校圖書館館員的素質(zhì)要求
- 土地信息系統(tǒng)建立過程中的數(shù)據(jù)質(zhì)量問題的探討
- 艾雷斯ACS-3662工作站在硫化機中的應(yīng)用
- IOS開發(fā)中WatchKit的應(yīng)用程序要點
- 電子商務(wù)中信息不對稱問題研究
- 職場中的生存法則
- 簡歷中的職業(yè)目標
- 簡歷中的個人評價
- 簡歷中的個人技能
- 簡歷中特長范文
- 簡歷中的自我簡介
- 簡歷中的工作年限
- 簡歷中個人評價
- 簡歷中的自我評價
- 簡歷中工作描述