读书人

@_@,用BASIC做全局钩子的有关问题

发布时间: 2012-02-03 22:02:47 作者: rapoo

@_@,用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到一定数量时候,会不再弹出来??
为什么??

[解决办法]
呃...有难度.....

先帮顶一下.....

读书人网 >VB

热点推荐