OpenProcess

更新时间:2024-06-16 17:25

方法名称:OpenProcess

VC

1.函数原型

HANDLE OpenProcess(

DWORD dwDesiredAccess, //渴望得到的访问权限(标志)

BOOL bInheritHandle, // 是否继承句柄

DWORD dwProcessId// 进程标示符

);

dwDesiredAccess:获取的权限,可分为以下几种

PROCESS_ALL_ACCESS:获取所有权限

PROCESS_CREATE_PROCESS:创建进程

PROCESS_CREATE_THREAD:创建线程

PROCESS_DUP_HANDLE:使用DuplicateHandle()函数复制一个新句柄

PROCESS_QUERY_INFORMATION:获取进程的令牌、退出码和优先级等信息

PROCESS_QUERY_LIMITED_INFORMATION:获取进程特定的某个信息

PROCESS_SET_INFORMATION:设置进程的某种信息

PROCESS_SET_QUOTA:使用SetProcessWorkingSetSize函数设置内存限制

PROCESS_SUSPEND_RESUME:暂停或者恢复一个进程

PROCESS_TERMINATE:使用Terminate函数终止进程

PROCESS_VM_OPERATION:在进程的地址空间执行操作

PROCESS_VM_READ:使用ReadProcessMemory函数在进程中读取内存

PROCESS_VM_WRITE:使用WriteProcessMemory函数在进程中写入内存

SYNCHRONIZE:使用wait函数等待进程终止

bInheritHandle:TRUE或者FALSE

dwProcessId:pid

2.返回值

如成功,返回值为指定进程的句柄。

如失败,返回值为空,可调用GetLastError获得错误代码

-------------------------------------------------------------

3.举例

HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pID );

----------------------

4.附:

BOOL ReadProcessMemory( HANDLE hProcess, PVOID pvAddressRemote, PVOID pvBufferLocal, DWORD dwSize, PDWORD pdwNumBytesRead);

参数

hProcess //为远程进程的句柄

pvAddressRemote //用于指明远程进程中的地址

pvBufferLocal //是本地进程中的内存地址

dwSize //是需要传送的字节数

pdwNumBytesRead和pdwNumBytesWritten //用于指明实际传送的字节数.当函数返回时,可以查看这两个参数的值.

在vb中的使用

1.VB声明

Declare Function OpenProcesskernel32Alias

说明

打开一个现有进程的句柄

2.返回值

Long,如执行成功,返回进程句柄;零表示失败。会设置GetLastError

3.参数表

参数 类型 及 说明

dwDesiredAccess Long,指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数

bInheritHandle Long,如句柄能够由子进程继承,则为TRUE

dwProcessId Long,要打开那个进程的进程标识符

4.注解

这个函数经常用来打开一个要进行同步的进程(同步:即步调协同,你说完,我再说,按说好的先后次序来)

5.举例

ByVal hObject As Long) As Long

Const PROCESS_ALL_ACCESS = &H1F0FFF=2035711

Dim hProcess As Long

hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid) '打开进程

If hProcess Then ReadProcessMemory hProcess, ByVal &H12F82C, base, 4, 0& '读写进程内存

CloseHandle hProcess '关闭进程句柄

End If

Delphi

var

ProcessHandle, PID: longword;

begin

GetWindowThreadProcessId(FindWindow('Shell_TrayWnd', nil), @PID);//获取c的PID

ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);//打开进程

Inject(ProcessHandle, @Main);//插入代码

CloseHandle(ProcessHandle);//关闭线程句柄

end.

语法

OpenProcess(

dwDesiredAccess: DWORD; {access flags}

bInheritHandle: BOOL; {handle inheritance flag}

dwProcessId: DWORD {the process identifier}

): THandle; {returns the handle of the open process}

说明:

OpenProcess函数执行成功将根据传入参数的PID返回该PID进程的句柄.执行失败返回0.执行失败的错误信息请使用GetLastError 函数.

参数说明:

dwDesiredAccess: 指定打开后,该进程的访问权限

PROCESS_ALL_ACCESS 给予进程所有可能允许的权限.

PROCESS_DUP_HANDLE允许使用DuplicateHandle函数进行进程句柄的复制操作.

PROCESS_QUERY_INFORMATION允许函数GetExitCodeProcess 或函数GetPriorityClass functions 查询进程的信息时使用该句柄.

PROCESS_SET_INFORMATION允许函数SetPriorityClass使用此句柄进行优先级设置.

PROCESS_TERMINATE允许函数TerminateProcess 使用此句柄关闭进程.

PROCESS_VM_OPERATION 允许函数VirtualProtectEx使用此句柄修改进程的虚拟内存.

PROCESS_VM_READ or PROCESS_VM_WRITE 允许函数访问和写入权限

SYNCHRONIZE Windows NT 专用: 允许同步函数使用此句柄.

bInheritHandle: 指定返回的句柄是继承dwProcessId指定的进程..

dwProcessId:指定打开需要打开的进程的PID.

易语言中的使用

.版本 2

.参数 dwDesiredAccess, 整数型, , 渴望得到的访问权限(标志)

.参数 bInheritHandle, 逻辑型, , 是否继承句柄

.参数 dwProcessId, 整数型, , 进程标识符

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}