OpenProcess

OpenProcess

目录导航

VC

1.函数原型

HANDLE OpenProcess(

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

BOOL bInheritHandle, // 是否继承句柄

DWORD dwProcessId// 进程标示符

);

dwDesiredAccess[1]获取的权限,可分为以下几种

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.附:

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

参数

hProcess //为远程进程的句柄

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

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

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

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

在vb中的使用

1.VB声明

Declare FunctionOpenProcessLib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

说明

打开一个现有进程的句柄

2.返回值

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

3.参数表

参数 类型 及 说明

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

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

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

4.注解

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

5.举例

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Const PROCESS_ALL_ACCESS = &H1F0FFF=2035711

Dim hProcess As Long

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

IfhProcessThenReadProcessMemoryhProcess, 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或函数GetPriorityClassfunctions 查询进程的信息时使用该句柄.

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

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

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

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

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

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

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

在易语言中的使用

.版本 2
.DLL命令 OpenProcess, 整数型, "Kernel32.dll", "OpenProcess", , 打开一个已存在的进程对象,并返回进程的句柄
.参数 dwDesiredAccess, 整数型, , 渴望得到的访问权限(标志)
.参数 bInheritHandle, 逻辑型, , 是否继承句柄
.参数 dwProcessId, 整数型, , 进程标识符

相关百科
返回顶部
产品求购 求购