const
WM_TestMessage = WM_USER + 2000;
...
function TestHookProc(Code: Integer; WParam: Longint;Msg:Longint): Longint;stdcall;
begin
if (Code = HC_ACTION) then
if PMsg(Msg)^.Message = WM_TestMessage then
begin
showMessage('已经截获该消息');
end;
Result := CallNextHookEx(HookHandle, Code, WParam, Longint(@Msg));
end;
实在有些看不懂啊!
PMsg(Msg)^.Message 到底怎么理解啊!
WM_TestMessage = WM_USER + 2000;
...
function TestHookProc(Code: Integer; WParam: Longint;Msg:Longint): Longint;stdcall;
begin
if (Code = HC_ACTION) then
if PMsg(Msg)^.Message = WM_TestMessage then
begin
showMessage('已经截获该消息');
end;
Result := CallNextHookEx(HookHandle, Code, WParam, Longint(@Msg));
end;
实在有些看不懂啊!
PMsg(Msg)^.Message 到底怎么理解啊!
解决方案 »
- 有经验软件行业经验的进来帮帮忙
- 开发模版群,欢迎大家加入 群号: 7722560
- 如何设置DBGridEh的自动排序?
- 关于WebService超时的问题一问
- 过年快放假了,开心,放点分之6
- 请问如何在程序中判断sql server的库和表是否存在?
- 把INTRAWEB的程序INSTALL到SERVICES里,但是这样一台机器只能开一个INTRAWEB程序,只这样吗???
- ★★★★★高分求二维条码的解决方安★★★★★★★★★★★★★★★
- !!!!!!!!!!!!!!!!!请问用clientsocket和serversocket的问题!!简单的很!!!!!!!!
- 怎样在DBGrid中使日期以长格式显示?
- 可以用程序来修改IP吗?
- 请教高手
HOOK我也正在研究中
他的msg定义为longint不是tmsg,你要转化一下才能用
PMsg = ^TMsg;
tagMSG = packed record
hwnd: HWND;
message: UINT;
wParam: WPARAM;
lParam: LPARAM;
time: DWORD;
pt: TPoint;
end;
{$EXTERNALSYM tagMSG}
TMsg = tagMSG;
MSG = tagMSG;
但 Code = HC_ACTION 和 Longint(@Msg) 具体怎么理解???钩子函数可以不判断Code = HC_ACTION而只通过PMsg(Msg)^.Message = WM_TestMessage 来进行自定义消息的截获吗?