首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2012-02-03 
@_@,用BASIC做全局钩子的问题我用BASIC做了个全局钩子,却无故变成了局部钩子。函数在标准的DLL(使用PowerBA

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

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

先帮顶一下.....

热点排行