关于OpenProcess这个函数
这是不是一个API函数?
如下的语句,
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
其中PROCESS_QUERY_INFORMATION 和PROCESS_VM_READ是什么意思? 两个东西当中那个竖杠是什么意思?
[解决办法]
http://baike.baidu.com/view/1280137.htm
[编辑本段]一.VC
方法名称: OpenProcess
位置: Kernel32.dll
OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄。
1.函数原型
HANDLE OpenProcess(
DWORD dwDesiredAccess, // access flag
BOOL bInheritHandle, // handle inheritance option
DWORD dwProcessId // process identifier
);
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 OpenProcess Lib "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.举例
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.