複製鏈接
請複製以下鏈接發送給好友

OpenProcess

鎖定
方法名稱:OpenProcess
位置:Kernel32.dll
OpenProcess 函數用來打開一個已存在的進程對象,並返回進程的句柄。
中文名
OpenProcess
位    置
Kernel32.dll
函數原型
HANDLE OpenProcess
功    能
進程標示符

OpenProcessVC

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
如成功,返回值為指定進程的句柄。
如失敗,返回值為空,可調用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 //用於指明實際傳送的字節數.當函數返回時,可以查看這兩個參數的值.

OpenProcess在vb中的使用

1.VB聲明
Declare Function OpenProcessLib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
説明
打開一個現有進程的句柄
2.返回值
Long,如執行成功,返回進程句柄;零表示失敗。會設置GetLastError
參數 類型 及 説明
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) '打開進程
If hProcess Then ReadProcessMemory hProcess, ByVal &H12F82C, base, 4, 0& '讀寫進程內存
CloseHandle hProcess '關閉進程句柄
End If

OpenProcessDelphi

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.

OpenProcess在易語言中的使用

.版本 2
.DLL命令 OpenProcess, 整數型, "Kernel32.dll", "OpenProcess", , 打開一個已存在的進程對象,並返回進程的句柄
.參數 dwDesiredAccess, 整數型, , 渴望得到的訪問權限(標誌)
.參數 bInheritHandle, 邏輯型, , 是否繼承句柄
.參數 dwProcessId, 整數型, , 進程標識符
參考資料