1. Uses
  2. Windows,
  3. SysUtils,
  4. Tlhelp32 ;
  5. Function KillTask( ExeFileName: String ): Integer ; //关闭进程
  6. Function EnableDebugPrivilege: Boolean ; //提升权限
  7. Function FindProcessId( ExeFileName: String ): THandle ; //查找进程
  8. Implementation
  9. Function FindProcessId( ExeFileName: String ): THandle ;
  10. Var
  11. ContinueLoop: BOOL ;
  12. FSnapshotHandle: THandle ;
  13. FProcessEntry32: TProcessEntry32 ;
  14. Begin
  15. result := 0 ;
  16. FSnapshotHandle := CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ) ;
  17. FProcessEntry32.dwSize := Sizeof( FProcessEntry32 ) ;
  18. ContinueLoop := Process32First( FSnapshotHandle, FProcessEntry32 ) ;
  19. While integer( ContinueLoop ) <> 0 Do
  20. Begin
  21. If UpperCase( FProcessEntry32.szExeFile ) = UpperCase( ExeFileName ) Then
  22. Begin
  23. result := FProcessEntry32.th32ProcessID ;
  24. break ;
  25. End ;
  26. ContinueLoop := Process32Next( FSnapshotHandle, FProcessEntry32 ) ;
  27. End ;
  28. CloseHandle( FSnapshotHandle ) ;
  29. End ;
  30. Function KillTask( ExeFileName: String ): Integer ;
  31. Const
  32. PROCESS_TERMINATE = $0001 ;
  33. Var
  34. ContinueLoop: boolean ;
  35. FSnapshotHandle: THandle ;
  36. FProcessEntry32: TProcessEntry32 ;
  37. Begin
  38. Result := 0 ;
  39. FSnapshotHandle := CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ) ;
  40. FProcessEntry32.dwSize := SizeOf( FProcessEntry32 ) ;
  41. ContinueLoop := Process32First( FSnapshotHandle, FProcessEntry32 ) ;
  42. While Integer( ContinueLoop ) <> 0 Do
  43. Begin
  44. If ( ( UpperCase( ExtractFileName( FProcessEntry32.szExeFile ) ) =
  45. UpperCase( ExeFileName ) ) Or ( UpperCase( FProcessEntry32.szExeFile ) =
  46. UpperCase( ExeFileName ) ) ) Then
  47. Result := Integer( TerminateProcess(
  48. OpenProcess( PROCESS_TERMINATE,
  49. BOOL( 0 ),
  50. FProcessEntry32.th32ProcessID ),
  51. 0 ) ) ;
  52. ContinueLoop := Process32Next( FSnapshotHandle, FProcessEntry32 ) ;
  53. End ;
  54. CloseHandle( FSnapshotHandle ) ;
  55. End ;
  56. //但是对于服务程序,它会提示"拒绝访问".其实只要程序拥有Debug权限即可:
  57. Function EnableDebugPrivilege: Boolean ;
  58. Function EnablePrivilege( hToken: Cardinal ;PrivName: String ;bEnable: Boolean ): Boolean ;
  59. Var
  60. TP: TOKEN_PRIVILEGES ;
  61. Dummy: Cardinal ;
  62. Begin
  63. TP.PrivilegeCount := 1 ;
  64. LookupPrivilegeValue( Nil, pchar( PrivName ), TP.Privileges[ 0 ].Luid ) ;
  65. If bEnable Then
  66. TP.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED
  67. Else
  68. TP.Privileges[ 0 ].Attributes := 0 ;
  69. AdjustTokenPrivileges( hToken, False, TP, SizeOf( TP ), Nil, Dummy ) ;
  70. Result := GetLastError = ERROR_SUCCESS ;
  71. End ;
  72. Var
  73. hToken: Cardinal ;
  74. Begin
  75. OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken ) ;
  76. result := EnablePrivilege( hToken, 'SeDebugPrivilege', True ) ;
  77. CloseHandle( hToken ) ;
  78. End ;
  79. End.

Delphi 中关闭指定进程的方法的更多相关文章

  1. DELPHI实现关闭指定进程,自身防杀

    偶然翻到很久以前用DELPHI写的一个小程序,实现功能是在后台默默关闭符合条件的进程,并隐藏自身.编写目的是为了防止办公电脑运行游戏. 实现原理是: 1.程序运行后将自身以不同的名称一式三份存到系统各 ...

  2. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  3. 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 ...

  4. Windows Server 2008中关闭事件跟踪程序的方法

    Windows Server 2008跟Windows Server 2003一样,在关机的时候会弹出一个“关闭事件跟踪程序”窗口,当然微软这么做是处于安全的考虑啦,但是如果我们只是个人用用的话,那就 ...

  5. Delphi中建立指定大小字体和读取该字体点阵信息的函数(转)

    源:Delphi中建立指定大小字体和读取该字体点阵信息的函数 Delphi中建立指定大小字体和读取该字体点阵信息的函数 作者:Thermometer Email:  webmaster@daheng- ...

  6. mac查看当前调用tcp的进程并关闭指定进程

    查看所有tcp进程 监听的端口 lsof -iTCP -sTCP:LISTEN 查看指定端口信息 lsof -i: 关闭指定进程 kill -

  7. Python3实现从文件中读取指定行的方法

    from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...

  8. python实现在目录中查找指定文件的方法

    python实现在目录中查找指定文件的方法 本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 代码如下: import os from ...

  9. Shell 关闭指定进程

    例如要关闭jupyter-notebook这个进程: - | 说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入. “ps -ef” 查看所有进程 “grep -v g ...

随机推荐

  1. Android加入新的视频格式--媒体库扫描

    需求:在mediaprovider数据库中加入.mov后缀格式的视频文件 能够使用工具MediaInfo_GUI_0.7.67_Windows.3243836749.exe 查看mov文件编码格式类型 ...

  2. 涛哥的Python脚本工具箱之生成带Logo的二维码

    近期须要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个. 须要安装qrcode,PIL库 二维码简称 QR Code(Quick Response Code),学名为高速响应 ...

  3. Unity3D - 性能优化之Draw Call

    Unity3D - 性能优化之Draw Call 分类: Unity 3D2012-09-13 11:18 1002人阅读 评论(0) 收藏 举报 性能优化引擎测试脚本图形算法 Unity(或者说基本 ...

  4. rm 命令简要

    rm   单独使用只能删除文件不能删除文件夹    rm -r 可以删除文件夹和文件 1.rm   test.txt   删除文件 2.rm   -r   test.txt   每次删除的时候都询问是 ...

  5. saltstack内置执行模块groupadd

    groupadd模块用于命令行管理用户组 salt.modules.groupadd.add(name, gid=None, system=False) 添加一个用户到指定GID 例:salt '*' ...

  6. php序列化与反序列化

    php序列化简单来说就是 把复杂的数据类型压缩到一个字符串中php对象转换成字符串,反序列化就是把变量转换成对象 一般来说  当把这些序列化的数据放在URL中在页面之间会传递时,需要对这些数据调用ur ...

  7. 如何创建AnjularJS项目

    第一步:命名空间 var applyAppModule=angular.module('apply-app' ,[]);    第二步:控制器 ng-controller="ApplyCon ...

  8. 常见UI组件的一个模板

    效果: 代码: using UnityEngine; using UnityEditor; using System.Collections; using System.IO; using Unity ...

  9. cocos2d-x 3.0rc1 使用iconv库 解决UTF8乱码问题

    多国语言要用到开源字符转换 iconv 先贴出自己的使用代码 你能够做成头文件 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include &qu ...

  10. Python 字符串拼接、格式化输出、深浅复制

    拼接:"+"号(同类型可拼接) >>>li = [1,2] >>>li + li [1,2,1,2] >>>li*2 [1,2 ...