如何在button下执行结束exe文件
如何按下按钮button1 立即一个delphi生成的111.exe结束 希望谁能给个代码
[解决办法]
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;
[解决办法]
unit Unit1;interfaceuses 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进程!就是这个意思!
[解决办法]