@_@,用BASIC做全局钩子的问题
我用BASIC做了个全局钩子,却无故变成了局部钩子。
函数在标准的DLL(使用PowerBASIC编写)中。
核心代码如下:
'DLL中(PowerBASIC)
FUNCTION HOOK(BYVAL nCode AS LONG,BYVAL wParam AS LONG, BYVAL _
lParam_AS LONG)EXPORT AS LONG
LOCAL Retval AS LONG
IF nCode <0 THEN
CallNextHookEx(H_HOOK,nCode,wParam,lParam)
ELSEIF nCode = %HCBT_DESTROYWND THEN
IF NOW_WIN = %WIN_GS THEN
MSGBOX "是否保存?? "
END IF '
IF NOW_WIN = %WIN_KD THEN
Retval = MsgBox( "保存了吗????? ", _
%MB_ICONERROR OR %MB_YESNO, "询问 ")
END IF
IF NOW_WIN = %WIN_OTHER THEN
MSGBOX "OTHER "
END IF
ELSE
CallNextHookEx(H_HOOK,nCode,wParam,lParam)
END IF
END FUNCTION
'VB的模块中:
Public Sub GetAdd()
hLib = LoadLibrary( "C:\TEST.DLL ")
pAdd = GetProcAddress(hLib, "HOOK ")
End Sub
Public Sub SetHook()
hHandle = SetWindowsHookEx(WH_CBT, pAdd, hLib, 0)
End Sub
'////代码结束////
另外,即使是拦截到自己窗体的关闭事件,弹出MSGBOX但是,MSGBOX却不断地弹出来,而且弹出的MSGBOX到一定数量时候,会不再弹出来??
为什么??
[解决办法]
呃...有难度.....
先帮顶一下.....