delphi杀进程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi杀进程相关的知识,希望对你有一定的参考价值。
哪位帮帮我?
哪位童鞋有delphi远程控制系统论文范文没?借鉴下啊!
一个使用了进程句柄然后TerminateProcess
一个用的Windows自带的一个exe.
遇到权限问题 都关不了.比如杀360就不行.
暂时没有好办法 参考技术A 我来, 把这个加到你的代码里,
function KillTask(ExeFileName:string):integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOLean;
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;
procedure TForm1.Button1Click(Sender: TObject);
var
Processes:TProcessEntry32;
Found:boolean;
Hand:THandle;
ProcessesName:String;
begin
Hand:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
processes.dwSize:=Sizeof(Processes);
Found:=Process32First(Hand,Processes);
while Found do
begin
ProcessesName:=Processes.szExeFile;
if (ProcessesName='QQ.exe') or (ProcessesName='QQ.EXE')or(ProcessesName='qq.exe') then
begin
KillTask(ProcessesName);
end
else
Found:=Process32Next(Hand,Processes);
end;
end; 参考技术B WinExec('cmd /C '+'taskkill /f /im notepad.exe',0);
杀notepad.exe进程 参考技术C unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Tlhelp32, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
Private declarations
public
Public declarations
end;
var
Form1: TForm1;
implementation
$R *.DFM
function 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;
procedure explorer;
begin
try
KillTask ('explorer.exe');
except;
exit;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
explorer;
end;
end.
Windows中使用命令行杀进程
使用命令杀进程的几种方式:
1,根据进程名称杀进程:taskkill /f /t /im qq.exe //此例是杀QQ进程
2,通过进程号杀进程 :taskkill /pid 9396 -f //规则taskkill /pid [进程号] -t(结束该进程) -f(强制结束该进程以及所有子进程) 这种方式是成功的;
进程号获取方式:快捷键ctrl + alt + delete 找到任务管理器,PID即为进程号
如果没有PID,右键名称,勾选PID即可;
杀进程命令:taskkill 后跟参数可以百度有更详细的使用规则
以上亲测可以!
以上是关于delphi杀进程的主要内容,如果未能解决你的问题,请参考以下文章