delphi 检查父进程


本文整理自网络,侵删。

 delphi 检查父进程 

{uses TLHelp32}
procedure CheckParentProc;
var
Pn: TProcesseNtry32;
sHandle: THandle;
ParentProc: HWND;
Found: Boolean;
begin
ParentProc := 0;

sHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
try
Found := Process32First(sHandle, Pn); //Search process
while Found do //Loop all processes
begin
if CompareText(ExtractFileName(Pn.szExeFile), ExtractFileName(ParamStr(0))) = 0 then //It's me
begin
ParentProc := Pn.th32ParentProcessID; //Get parent process ID
Break;
end;

Found := Process32Next(sHandle, Pn); //Find next
end;

if ParentProc > 0 then //Valid
begin
Found := Process32First(sHandle, Pn);
while Found do
begin
if Pn.th32ProcessID = ParentProc then //It's my parent process
begin
ParentProc := Pn.th32ParentProcessID; //Get its parent process, my grandfather process :)
Break;
end;

Found := Process32Next(sHandle, Pn); //Find next
end;

if ParentProc > 0 then
begin
Found := Process32First(sHandle, Pn);
while Found do
begin
if Pn.th32ProcessID = ParentProc then
begin
if CompareText(UpperCase(ExtractFileName(Pn.szExeFile)), 'EXPLORER.EXE') = 0 then //Grandfather process is Explorer.exe
begin
ShowMessage('Debugger detected! Doggone it all!');
Break;
end;
end;

Found := Process32Next(sHandle, Pn); //Find next
end;
end;
end;
finally
CloseHandle(sHandle);
end;
end;

相关阅读 >>

Delphi tgifimage:timage显示gif动画

Delphi跨平台检测网络连接状态

Delphi tfdmemtable 更新到数据库

Delphi webbrowser1去边框

Delphi winapi: getmodulefilename、getmodulehandle

Delphi 一个绘制虚线的非常规函数(常规方法,打印机上绘制不出虚线)

Delphi 利用阿里大于接口发短信(Delphi版)

Delphi的串口通讯,数据接收实时性太差

Delphi的tclientsocket组件和tserversocket组件(c/s)说明

Delphi xe android/ios 手势介绍

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...