结束外部程序的源代码

EnumWindows(@closeApp,   integer(pchar('应用)));  
  function   closeApp(wnd:   HWND;   cap:pchar)     :   boolean   ;stdcall;  
  var   Caption:   array[0..256]   of   Char;  
  begin  
      if   GetWindowText     (wnd,   Caption,   SizeOf(Caption)-1)   <>   0   then  
      begin  
          if   copy(strPas(Caption),1,length(strPas(cap)))=strPas(cap)   then  
                PostMessage(wnd,wm_close,0,0);  
      end;  
      Result   :=True;  
  end;  

=======================================

{For   Windows   9x/ME/2000/XP   }    
   
  uses    
      Tlhelp32;    
   
  function   KillTask(ExeFileName:   string):   Integer;    
  const    
      PROCESS_TERMINATE   =   $0001;    
  var    
      ContinueLoop:   BOOL;    
      FSnapshotHandle:   THandle;    
      FProcessEntry32:   TProcessEntry32;    
  begin    
      Result   :=   0;    
      FSnapshotHandle   :=   CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,   0);    
      FProcessEntry32.dwSize   :=   SizeOf(FProcessEntry32);    
      ContinueLoop   :=   Process32First(FSnapshotHandle,   FProcessEntry32);    
   
      while   Integer(ContinueLoop)   <>   0   do    
      begin    
          if   ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))   =    
              UpperCase(ExeFileName))   or   (UpperCase(FProcessEntry32.szExeFile)   =    
              UpperCase(ExeFileName)))   then    
              Result   :=   Integer(TerminateProcess(    
                                                  OpenProcess(PROCESS_TERMINATE,    
                                                                          BOOL(0),    
                                                                          FProcessEntry32.th32ProcessID),    
                                                                          0));    
            ContinueLoop   :=   Process32Next(FSnapshotHandle,   FProcessEntry32);    
      end;    
      CloseHandle(FSnapshotHandle);    
  end;    
   
  procedure   TForm1.Button1Click(Sender:   TObject);    
  begin    
      KillTask('notepad.exe');    
  end;    
   
  {   For   Windows   NT/2000/XP   }    
   
  procedure   KillProcess(hWindowHandle:   HWND);    
  var    
      hprocessID:   INTEGER;    
      processHandle:   THandle;    
      DWResult:   DWORD;    
  begin    
      SendMessageTimeout(hWindowHandle,   WM_CLOSE,   0,   0,    
          SMTO_ABORTIFHUNG   or   SMTO_NORMAL,   5000,   DWResult);    
   
      if   isWindow(hWindowHandle)   then    
      begin    
          //   PostMessage(hWindowHandle,   WM_QUIT,   0,   0);    
   
          {   Get   the   process   identifier   for   the   window}    
          GetWindowThreadProcessID(hWindowHandle,   @hprocessID);    
          if   hprocessID   <>   0   then    
          begin    
              {   Get   the   process   handle   }    
              processHandle   :=   OpenProcess(PROCESS_TERMINATE   or   PROCESS_QUERY_INFORMATION,    
                  False,   hprocessID);    
              if   processHandle   <>   0   then    
              begin    
                  {   Terminate   the   process   }    
                  TerminateProcess(processHandle,   0);    
                  CloseHandle(ProcessHandle);    
              end;    
          end;    
      end;    
  end;    
   
  procedure   TForm1.Button2Click(Sender:   TObject);    
  begin    
      KillProcess(FindWindow('notepad',nil));    
  end;    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值