delphi杀进程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi杀进程相关的知识,希望对你有一定的参考价值。

哪位帮帮我?
哪位童鞋有delphi远程控制系统论文范文没?借鉴下啊!

楼上2个的代码都可以.
一个使用了进程句柄然后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杀进程的主要内容,如果未能解决你的问题,请参考以下文章

delphi 如何实现进程隐藏或防杀?(完整且上机切实有效!!)

如何关闭运行中的excel.exe delphi

delphi程序运行时别的功能无法使用

delphi程序中为啥运行后程序窗口不显示,进程中有

Delphi如何获取一个隐藏进程的程序的进程ID

使用delphi多线程实现绑定某个EXE的进程并且向它发送键盘鼠标消息的实例。