各位大俠:win98+delphi6中為何使用RegisterClass通不過呢?

                            
當我用程序   
        if   not   EnableMouseHook(handle,     GetCurrentProcessID,Application.Handle)   then    
          ShowMessage('ERROR')  
      else  
          SetCaptureFlag(TRUE);  
   
  當系統是win98+delphi6時,調用   GFDict.DLL中的   EnableMouseHook   函數時總是通不過,  
  問題就是在RegisterClass這裡,但是在系統是winXP+delphi6的時候就可以通過,不知是何原因??  
   
  GFDict.DLL   部分代碼如下:  
   
   
  function   EnableMouseHook(hld:hwnd;   ProcessID   :   DWORD;   hInst:THandle):   BOOL;   export;  
  begin  
      Result   :=   False;  
      if   hNextHookProc   <>   0   then   Exit;  
   
      hNextHookProc   :=   SetWindowsHookEx(WH_MOUSE,   MousePosHookHandler,Hinstance,   0);  
  //         GetWindowThreadProcessID(hWnd,   nil));  
   
      InitCoverWindow(hInst);  
   
      if   CommonData   <>   nil   then   begin  
          CommonData^.CallBackHandle   :=   hld;  
          CommonData^.CallBackProcID   :=   ProcessID;  
      end;  
      Result   :=hNextHookProc   <>   0   ;  
  end;  
   
   
  procedure   InitCoverWindow(hInst   :   LongWord);  
  var  
      WndClass   :   TWndClass;   //Ex;  
      //WndClass   :   TWndClassEx;  
  begin  
      with   WndClass   do   begin  
          style                             :=   WS_EX_TOPMOST;  
          lpfnWndProc                 :=   @CoverMainProc;     (*秏洘揭燴滲杅*)  
          hInstance                     :=   hInst;  
          hbrBackground             :=   color_btnface   +   1;  
          lpszClassname             :=   'GanFreeDict';  
          hicon                             :=   0;  
          hCursor                         :=   0;  
          cbClsExtra                   :=   0;  
          cbWndExtra                   :=   0;  
      end;  
   
      try  
          //if   not   BOOL(RegisterClass{Ex}(WndClass))   then   begin  
          if   not   BOOL(RegisterClass{Ex}(WndClass))   then   begin  
              MessageBox(0,  
                                    PChar(Format('$EEEE,   Can   not   register   class   CHILD   %d',[GetLastError])),  
                                    'Register   Error',  
                                    MB_OK);  
          end;  
      except  
          MessageBox(0,   'EXCEPTION',   'Register   Class',   MB_OK);  
      end;  
   
      hWndCover   :=   CreateWindowEx(WS_EX_TOPMOST   or   WS_EX_TOOLWINDOW,  
                                                              'GanFreeDict',  
                                                              '^_^',  
                                                              WS_POPUP   or   WS_VISIBLE,  
                                                              -1,-1,1,1,  
                                                              0,  
                                                              0,  
                                                              hInst,   //   GetModuleHandle('dll.dll'),   //   98   for   this,   2000   for   0  
                                                              nil);  
   
      if   CommonData<>nil   then   begin  
          CommonData^.hWndFloat   :=   hWndCover;  
      end;  
      SetTimer(hWndCover,   1,   450,   @WndCoverTimer);  
  end;  
   
   
   
   
 

查看回复