希望哪位高手能提供在QQ刚开始运行时关闭QQ登录窗口的程序代码,及在QQ运行以后关闭QQ的程序代码!准备五百,少了再说!

解决方案 »

  1.   

    你的意思是指禁止QQ运行???
    uses
      tlhelp32;procedure CloseQQ();
    var
      hSnapShot: THandle;
      lppe     : TProcessEntry32;
      hProcess : Cardinal;
    begin
      hSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      lppe.dwSize := sizeof(lppe);
      if Process32First(hSnapShot,lppe) then
      begin
        while Process32Next(hSnapShot,lppe) do
        begin
          if lppe.szExeFile = 'QQ.exe' then
          begin
            //showmessage('ultraedit is running!');
            //TerminateProcess(lppe.th32ProcessID,0);
            hProcess := OpenProcess(PROCESS_ALL_ACCESS,True,lppe.th32ProcessID);
            TerminateProcess(hProcess,0)
          end;
        end;
      end;
      CloseHandle(hSnapShot);
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      CloseQQ();
    end;或者做成后台线程也可以
      

  2.   

    谢谢:naughtyboy(重归起跑线) 我试了一下,好像不行。我用的是QQ2003版。再说如果我把QQ.exe改个名字的话应该也用不了吧。可不可以用别的办法,比如说拦截窗口创建的消息,一旦发现有新窗口出现就判断是不是QQ,如果是的话就关掉它。
      

  3.   

    我觉得用Process32First来遍历系统快照不错
      

  4.   

    对于QQ的窗口我已经解决了,现在的问题就是:
    一、关闭已经在运行的QQ;
    二、拦截并处理系统窗口创建的消息,发现是QQ则关掉;怎么样拦截消息啊,有没有具体带码。我刚接触这方面,希望各位指教!
      

  5.   

    查系统进程有没有QQ正常运行所须的dll.=================================================================== 相信我,没错的!
    (错了,也别来找我`~_~!)===================================================================
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     FSnapshotHandle:THandle;
     FProcessEntry32:TProcessEntry32;
     Ret : BOOL;
     ProcessID : integer;
     s:string;
    begin
     FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
     FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
     Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
     Memo1.clear;
     while Ret do
     begin
       Memo1.lines.add(FProcessEntry32.szExeFile);
       s:=ExtractFileName(FProcessEntry32.szExeFile);
       if s='qq.exe' then
       begin
         ProcessID:=FProcessEntry32.th32ProcessID;
         TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,ProcessID),1);
         s:='';
       end;
       Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
     end;
    end;
     
      

  7.   

    谢谢~谢谢各位!但是还是那个问题,把QQ.EXE改个名字就不行了!
      

  8.   

    如 kejian(御剑飞仙) 所说,可以查一查每个进程中加载的DLL,判断是否有QQ必须加载的模块。