首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-17 
如何在button下执行结束exe文件如何按下按钮button1 立即一个delphi生成的111.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;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进程!就是这个意思!
[解决办法]
探讨
二憨兄 如果我的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)



[解决办法]
做木马程序经常用到这样的功能.是不是搞这类的.可以发出来大家研究一下.

热点排行