DELPHI根据进程名强制关闭进程
2007-12-18 14:50
633 查看
原理:
循环所有进程,取得相同名的进程,得到进程句柄,关闭
killtask('cmd.exe');
//结束进程
function TForm1.KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
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(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
//提权
function TForm1.EnablePrivilege(hToken: Cardinal; PrivName: string; bEnable:
Boolean): Boolean;
var
TP: TOKEN_PRIVILEGES;
Dummy: Cardinal;
begin
TP.PrivilegeCount := 1;
LookupPrivilegevalue(nil, pchar(PrivName), TP.Privileges[0].Luid);
if bEnable then
TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
TP.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, TP, SizeOf(TP), nil, Dummy);
Result := GetLastError = ERROR_SUCCESS;
end;
循环所有进程,取得相同名的进程,得到进程句柄,关闭
killtask('cmd.exe');
//结束进程
function TForm1.KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
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(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
//提权
function TForm1.EnablePrivilege(hToken: Cardinal; PrivName: string; bEnable:
Boolean): Boolean;
var
TP: TOKEN_PRIVILEGES;
Dummy: Cardinal;
begin
TP.PrivilegeCount := 1;
LookupPrivilegevalue(nil, pchar(PrivName), TP.Privileges[0].Luid);
if bEnable then
TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
TP.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, TP, SizeOf(TP), nil, Dummy);
Result := GetLastError = ERROR_SUCCESS;
end;
相关文章推荐
- DELPHI根据进程名强制关闭进程
- DELPHI根据进程名强制关闭进程
- Delphi中强制结束一个进程
- Linux根据端口号关闭相应的进程Shell脚本
- androd 源码中强制关闭应用程序进程的方法
- Delphi中强制结束一个进程
- C#中强制关闭某个进程
- 根据进程名或者ID称关闭进程
- C#-定时关闭进程。根据定时关闭进程做的自动关闭游戏小软件。
- C# 根据进程名关闭进程方法
- C#强制关闭Excel进程(通过COM使用Excel时)
- C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
- 根据pID 强制删除进程
- Android 应用程序(APK) 如何获得系统签名权限 强制关闭程序(后台进程)
- C# 根据进程名关闭进程方法
- c强制退出本进程自己,vc关闭自己
- Window根据进程名关闭进程的代码
- C# 根据进程名关闭进程方法
- DELPHI关闭进程