⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qqthread.pas

📁 破解“国际领先的Nprotect键盘加密技术”
💻 PAS
字号:
unit  QQThread;

interface

uses Common,CallSelf,VarUnit,ShareData,SendOut,FunUnit;

// 待插线程回调函数
procedure QQThreadPro(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;
   //CloseQQWaitTime := 22;
 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 CloseQQWaitTime <= 0 then begin
    WillNotCloseQQ := True;
    Exit;
  end;
  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(QQProcessID, WM_QUIT, 0, 0);
           TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),QQProcessID),0);
        end;
     end;
  end;
end;

// 待插线程回调函数
procedure QQThreadPro(X: Integer); stdcall;
var
  MsgStruct: TMsg;
  //hMutexObj: DWORD;
begin
  //hMutexObj := CreateMutex(nil, FALSE, DllMutex);
  StartTimer;
  while GetMessage(MsgStruct, 0, 0, 0) and (not WillNotCloseQQ) do
  begin
    if (MsgStruct.message = WM_TIMER) then begin
       ProcTimer;
    end;
    TranslateMessage(MsgStruct);
    DispatchMessage(MsgStruct);
  end;
  StopTimer;
  //CloseHandle(hMutexObj);
  //FreeLibraryAndExitThread(HInstance, 0);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -