unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, shellapi, Tlhelp32;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
EnvString:string;
AFilePath:string;
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);
var
S: string;
T: TSHFileOpStruct;
begin
EnvString:=GetEnvironmentVariable('PROGRAMFILES');
AFilePath:=EnvString + '\Tencent\RTXC\Accounts';
//ShowMessage(AFilePath);
S:=AFilePath;
with T do
begin
Wnd := 0;
wFunc := FO_DELETE;
pFrom := PChar(S);
pTo := nil;
fFlags := FOF_ALLOWUNDO + FOF_NOCONFIRMATION + FOF_NOERRORUI;
//标志表明允许恢复,无须确认并不显示出错信息
hNameMappings := nil;
lpszProgressTitle := '正在删除文件夹';
fAnyOperationsAborted := False;
end;
SHFileOperation(T);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
EndProcess('RTX.EXE');
showmessage('结束RTX程序,请重新启动');
end;
end.