OpenProcess、GetExitCodeProcess、TerminateProcess
- //声明:
- {返回进程的句柄}
- OpenProcess(
- dwDesiredAccess: DWORD; {訪问选项}
- bInheritHandle: BOOL; {是否能继承; True 表示能用 CreateProcess 继承句柄创建新进程}
- dwProcessId: DWORD {指定进程 ID}
- ): THandle; {成功会返回进程句柄; 失败返回 0}
- //dwDesiredAccess 可选值:
- PROCESS_TERMINATE = $0001; {同意 TerminateProcess 使用进程句柄来关闭进程}
- PROCESS_CREATE_THREAD = $0002; {同意 CreateRemoteThread 使用进程句柄来创建线程}
- PROCESS_VM_OPERATION = $0008; {同意 VirtualProtectEx 使用进程句柄来改变进程的虚拟内存}
- PROCESS_VM_READ = $0010; {同意 ReadProcessMemory 使用进程句柄从进程的虚拟内存中读取数据}
- PROCESS_VM_WRITE = $0020; {同意 WriteProcessMemory 使用进程句柄向进程的虚拟内存中写入数据}
- PROCESS_DUP_HANDLE = $0040; {同意 DuplicateHandle 把进程句柄当作源句柄或目标句柄进行复制}
- PROCESS_CREATE_PROCESS = $0080; {默认值}
- PROCESS_SET_QUOTA = $0100; {同意 SetProcessWorkingSetSize 使用进程句柄来来设置虚拟内存的上限值}
- PROCESS_SET_INFORMATION = $0200; {同意 SetPriorityClass 使用进程句柄来设置进程优先级}
- PROCESS_QUERY_INFORMATION = $0400; {同意 GetExitCodeProcess 或 GetPriorityClass 通过进程句柄读取进程信息}
- SYNCHRONIZE = $00100000; {同意不论什么等待的函数使用进程句柄}
- PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $FFF); {同意全部权限}
- {获取指定进程的退出码}
- GetExitCodeProcess(
- hProcess: THandle; {进程句柄}
- var lpExitCode: DWORD {接收退出码}
- ): BOOL; {}
- {强制结束(其它)进程}
- TerminateProcess(
- hProcess: THandle; {进程句柄}
- uExitCode: UINT {退出码}
- ): BOOL; {}
- //提示: 关闭其它程序一般应该是向其主窗体发送 WM_CLOSE 消息, 不行再用这个, 由于它不能关闭其关联的 DLL.
- //举例(强行关闭 OICQ 的办法):
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TForm1 = class(TForm)
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.Button1Click(Sender: TObject);
- var
- id: Cardinal;
- wh: HWND;
- ph: THandle;
- ExitCode: DWORD;
- begin
- wh := FindWindow('#32770', nil);
- GetWindowThreadProcessId(wh, id);
- ph := OpenProcess(PROCESS_TERMINATE, False, id);
- GetExitCodeProcess(ph, ExitCode);
- TerminateProcess(ph, ExitCode);
- end;
- end.
OpenProcess、GetExitCodeProcess、TerminateProcess的更多相关文章
- WinAPI: OpenProcess、GetExitCodeProcess、TerminateProcess (测试强制关闭 OICQ)
原文:http://www.cnblogs.com/del/archive/2008/03/10/1098502.html //声明: {返回进程的句柄} OpenProcess( dwDesir ...
- Delphi编程获取系统当前进程、窗口句柄、文件属性以(转)
Delphi编程获取系统当前进程.窗口句柄.文件属性以及程序运行状态. uses TLHelp32,PsAPI; (1)显示进程列表:procedure TForm1.Button2Click(Sen ...
- apiCloud图片选择、处理、上传模块
将 apiCloud 开发app的图片上传流程,完整封装成了一个页面,页面处理一些必备的处理库外和css外 ,还需要依赖jquery 库,不过可以不管,页面默认使用cnd引用. 页面使用接口如下:pa ...
- 多线程&多进程解析:Python、os、sys、Queue、multiprocessing、threading
当涉及到操作系统的时候,免不了要使用os模块,有时还要用到sys模块. 设计到并行程序,一般开单独的进程,而不是线程,原因是python解释器的全局解释器锁GIL(global interpreter ...
- Python常用模块 (2) (loging、configparser、json、pickle、subprocess)
logging 简单应用 将日志打印到屏幕 import logging logging.debug('debug message') logging.info('info message') log ...
- Win API:之GetCurrentThread、GetCurrentThreadId、GetCurrentProcess、GetCurrentProcessId
Win API:之GetCurrentThread.GetCurrentThreadId.GetCurrentProcess.GetCurrentProcessId {返回当前线程的虚拟句柄} Get ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- vmware里面的名词 vSphere、vCenter Server、ESXI、vSphere Client
vmware里面的名词 vSphere.vCenter Server.ESXI.vSphere Client vSphere.vCenter Server.ESXI.vSphere Client VS ...
- 深入理解DIP、IoC、DI以及IoC容器
摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...
随机推荐
- MySQL 类型转换
1.问题描述 在项目中遇到要将Int类型转为Char类型,然后利用转化后的Char类型进行模糊查询. 例:合同编号在数据库中为int类型 8066 用利用 806 模糊查询出合同编号为8066数据记录 ...
- [leetcode tree]96. Unique Binary Search Trees
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...
- python opencv3 矩形 圆形边框
git:https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 import numpy as np # 读入图像 ...
- 列表中字符串按照某种规则排序的方法(python)
有时候处理数据时,想要按照字符串中的数字的大小进行排序. 譬如,存在一组记录文件,分别为‘1.dat’,'2.dat'... 当我把该文件夹中的所有记录文件名读到一个列表中,这些字符串的排列方式为: ...
- django中缓存配置
# ======缓存配置====== CACHES = { ## 虚拟缓存,开发调试版本,此为开始调试用,实际内部不做任何操作 # 'default': { # 'BACKEND': 'django. ...
- DataTable,List,Dictonary互转,筛选及相关写法
1.创建自定义DataTable /// 创建自定义DataTable(一) 根据列名字符串数组, /// </summary> /// <param name="sLi ...
- 冒泡排序(初级版)之C++实现
冒泡排序(初级版)之C++实现 一.源代码:BubbleSortLow.cpp /*冒泡排序思想: 从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面: 一轮比 ...
- ngx_lua配置及应用
一.说明 这里不对lua语言本身及其编译器运行环境等做介绍,以下所有介绍前提对lua相关有所了解. 二.ngx_lua介绍 原理 ngx_lua将Lua嵌入Nginx,可以让Nginx执行Lua脚本, ...
- 【转】说下lua使用场景
[今日话题]说下lua使用场景 – flea 1. 我们有用,一些逻辑相对简单,没有复杂的数据交互,访问频次超高的接口实现,可以用lua,省得用phpfpm,太重,浪费资源. – 付坤 2. 也可 ...
- Android之安全机制
根据android四大框架来解说安全机制 代码安全 java不同于C/C++,java是解释性语言,存在代码被反编译的隐患: 默认混淆器为proguard,最新版本为4.7: proguard还可用来 ...