怎么在button下执行结束exe文件

如何在button下执行结束exe文件
如何按下按钮button1 立即一个delphi生成的111.exe结束 希望谁能给个代码

------解决方案--------------------
Delphi(Pascal) code

procedure EndProcess(AFileName: string);
const
        PROCESS_TERMINATE = $0001;
var
        ContinueLoop: BOOL;
        FSnapShotHandle: THandle;
        FProcessEntry32: TProcessEntry32;
begin
        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(AFileName))
                        or (UpperCase(FProcessEntry32.szExeFile ) = UpperCase(AFileName))) then
                        TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),FProcessEntry32.th32ProcessID), 0);
                ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
        end;
end;

------解决方案--------------------
使用资源,很简单.
先打开记事本,输入
b_exe EXEFILE "b.exe"

将文件存为bexe.rc,打开windows命令提示窗口,输入

brcc32.exe bexe.rc

得到一个名为bexe.res的资源文件。将该文件与工程文件(.dpr)放在一起。
在源程序中加上一句:
{$R bexe.res}

下面这段代码在运行时释放出b.exe文件:
var
rs:TResourceStream;
begin
rs:=TResourceStream.create(hinstance,'b_exe','EXEFILE');
try
rs.saveToFile('b.exe');
finally
rs.free;
end;
winExec('b.exe',sw_show);
end;


------解决方案--------------------
Delphi(Pascal) code

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TLHelp32;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure EndProcess(AFileName: string);
const
        PROCESS_TERMINATE = $0001;
var
        ContinueLoop: BOOL;
        FSnapShotHandle: THandle;
        FProcessEntry32: TProcessEntry32;
begin
        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(AFileName))
                        or (UpperCase(FProcessEntry32.szExeFile ) = UpperCase(AFileName))) then
                        TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),FProcessEntry32.th32ProcessID), 0);
                ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
        end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
        WinExec('project2.exe',SW_SHOWNORMAL);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
        EndProcess('project2.exe');
end;

end.

------解决方案--------------------
这个代码的原理是遍历系统进程的名称。你打开11.exe程序时,在任务管理器的进程中就可以看到名为11.exe的进程名,它实际上就是找这个名称,如果找到就TerminateProcess进程!就是这个意思!
------解决方案--------------------
探讨
二憨兄 如果我的exe文件路径是d:\123.exe 我只需要把project2.exe改成123.exe就可以了吗

------解决方案--------------------
探讨
尝试了下 用 EndProcess没有成功 用KillTask可以 不知道有什么区别
不知道如果一个按钮事件下顺次执行 winexec 111.bat 及killtask 222.exe(111.bat触发是222.exe 111.bat里有n条命令 没执行一个都要打开一个222.exe 想每执行一个批处理时,自动关闭一个222.exe)