Delphi 中关闭指定进程的方法
- Uses
- Windows,
- SysUtils,
- Tlhelp32 ;
- Function KillTask( ExeFileName: String ): Integer ; //关闭进程
- Function EnableDebugPrivilege: Boolean ; //提升权限
- Function FindProcessId( ExeFileName: String ): THandle ; //查找进程
- Implementation
- Function FindProcessId( ExeFileName: String ): THandle ;
- 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( FProcessEntry32.szExeFile ) = UpperCase( ExeFileName ) Then
- Begin
- result := FProcessEntry32.th32ProcessID ;
- break ;
- End ;
- ContinueLoop := Process32Next( FSnapshotHandle, FProcessEntry32 ) ;
- End ;
- CloseHandle( FSnapshotHandle ) ;
- End ;
- 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 ;
- //但是对于服务程序,它会提示"拒绝访问".其实只要程序拥有Debug权限即可:
- Function EnableDebugPrivilege: Boolean ;
- Function 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 ;
- Var
- hToken: Cardinal ;
- Begin
- OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken ) ;
- result := EnablePrivilege( hToken, 'SeDebugPrivilege', True ) ;
- CloseHandle( hToken ) ;
- End ;
- End.
Delphi 中关闭指定进程的方法的更多相关文章
- DELPHI实现关闭指定进程,自身防杀
偶然翻到很久以前用DELPHI写的一个小程序,实现功能是在后台默默关闭符合条件的进程,并隐藏自身.编写目的是为了防止办公电脑运行游戏. 实现原理是: 1.程序运行后将自身以不同的名称一式三份存到系统各 ...
- Delphi中TStringList类常用属性方法详解
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...
- C#判断一个类中有无"指定名称"的方法
C#中可以通过反射分析元数据来解决这个问题,示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...
- Windows Server 2008中关闭事件跟踪程序的方法
Windows Server 2008跟Windows Server 2003一样,在关机的时候会弹出一个“关闭事件跟踪程序”窗口,当然微软这么做是处于安全的考虑啦,但是如果我们只是个人用用的话,那就 ...
- Delphi中建立指定大小字体和读取该字体点阵信息的函数(转)
源:Delphi中建立指定大小字体和读取该字体点阵信息的函数 Delphi中建立指定大小字体和读取该字体点阵信息的函数 作者:Thermometer Email: webmaster@daheng- ...
- mac查看当前调用tcp的进程并关闭指定进程
查看所有tcp进程 监听的端口 lsof -iTCP -sTCP:LISTEN 查看指定端口信息 lsof -i: 关闭指定进程 kill -
- Python3实现从文件中读取指定行的方法
from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...
- python实现在目录中查找指定文件的方法
python实现在目录中查找指定文件的方法 本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 代码如下: import os from ...
- Shell 关闭指定进程
例如要关闭jupyter-notebook这个进程: - | 说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入. “ps -ef” 查看所有进程 “grep -v g ...
随机推荐
- PHP 依据IP地址获取所在城市
有这种需求,须要依据用户的IP地址,定位用户所在的城市. 本文记录性文章,无逻辑性.有这样需求的朋友.能够直接拷贝使用.直接上代码,不需赘述. <? php header('Content-Ty ...
- 小白学习HTTPS
如果你和我一样是HTTPS的小白的话,那就一起来学习这个吧.争取把这篇博客写好,写全面,从原理到实践再到部署. 让我们先来模拟一个场景:当你嗨皮地敲着代码,你的老板偷偷摸摸跑到你的身边,"小 ...
- Java IO、网络编程、NIO、Netty、Hessian、RPC、RMI的学习路线
好久没看Java IO这块的内容,感觉都快忘得差不多了.平成编程也没有设计到太多的Java基础知识,所以这里希望可以抽点时间回顾一下,让艾宾浩斯记忆曲线不要下降的太快. 回顾这个主要还是以总结为主,能 ...
- xshell 连接腾讯服务器
1.先关机, 创建秘钥,再绑定主机,下载秘钥保存下来 2. 填写好主机好和端口 3 4.导入刚才下载的文件 记住用户名是ubuntu 不是root!!
- 详解path和classpath的区别
详解path和classpath的区别 path的作用 path是系统用来指定可执行文件的完整路径,即使不在path中设置JDK的路径也可执行JAVA文件,但必须把完整的路径写出来,如C:\Progr ...
- 嵌入式开发之simulation--- 双目移动dsp机器人
http://foundy.blog.163.com/blog/static/263383442014112391130207/
- git 常用使用命令
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html http://www.open-open.com/lib/view/open14 ...
- 修改mysql数据库存储目录
使用了VPS一段时间之后发现磁盘空间快满了.本人的VPS在购买的时候买了500gb的磁盘,提供商赠送了20GB的高性能系统磁盘.这样系统就有两个磁盘空间了.在初次安装mysql 的时候将数据库目录安装 ...
- EasyDSS流媒体服务器软件对数据库Sqlite3和MySQL的同时支持说明
EasyDSS流媒体音视频直播与点播服务器软件,是一套提供一站式的转码.点播.直播.检索.回放.录像下载服务的高性能RTMP/HLS/HTTP-FLV流媒体服务,极大地简化了流媒体相关业务的开发和集成 ...
- WCF基础之序列化
wcf是基于消息进行通信的,这篇就是简单说下序列化引擎是如何将.net object转化为xml消息.一般情况下很少用到这些,你只需定义数据协定之类的或者指定相应的序列化引擎,然后设置相应的特性就好. ...