如何在button下执行结束exe文件 如何按下按钮button1 立即一个delphi生成的111.exe结束 希望谁能给个代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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;使用举例:EndProcess('111.exe'); 使用资源,很简单.先打开记事本,输入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; 如何按下按钮button1 立即将一个已经打开的delphi文件111.exe结束 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. 二憨兄 如果我的exe文件路径是d:\123.exe 我只需要把project2.exe改成123.exe就可以了吗 这个代码的原理是遍历系统进程的名称。你打开11.exe程序时,在任务管理器的进程中就可以看到名为11.exe的进程名,它实际上就是找这个名称,如果找到就TerminateProcess进程!就是这个意思! 尝试了下 用 EndProcess没有成功 用KillTask可以 不知道有什么区别不知道如果一个按钮事件下顺次执行 winexec 111.bat 及killtask 222.exe(111.bat触发是222.exe 111.bat里有n条命令 没执行一个都要打开一个222.exe 想每执行一个批处理时,自动关闭一个222.exe) 你需要做些进程间通信,否则多个222.exe同时运行,KillTask会全杀。这样会比较麻烦,建议还是将222.exe改成DLL,这样全部在一个进程,管理的时候方便。 111.bat里有n条命令 每执行一个都要打开一个222.exe 关闭222.exe后111.bat再执行下一条 另外222.exe 不能改成dll 必须是exe的 用过vclskin的高手,请来帮帮忙。 大家帮帮忙! 罕事!一个创建的资源不能被释放 ■■■如何用VBS脚本随时从外部扩充或修改程序功能和实现有限的自动执行(宏)? 恭喜CSDN论坛又开,放分~,不过好象收藏夹的东西没了~ 怎样启动密码窗体? 关于POS系统开发建议!UP者有分,建议加分! 编译别人的程序,出现TDoubleBufferedPannel not found? 高分求助!100分,欢迎都来看看 关于ASPACK delphi idhttp post 正确和错误的信息两次结果一样?? 多线程下用ADO访问本地数据库
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;
使用举例:EndProcess('111.exe');
先打开记事本,输入
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.
不知道如果一个按钮事件下顺次执行 winexec 111.bat 及killtask 222.exe(111.bat触发是222.exe 111.bat里有n条命令 没执行一个都要打开一个222.exe 想每执行一个批处理时,自动关闭一个222.exe)
这样会比较麻烦,建议还是将222.exe改成DLL,这样全部在一个进程,管理的时候方便。
另外222.exe 不能改成dll 必须是exe的