函数原型:HANDLE OpenProcess(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId);
参数:
dwDesiredAccess:访问权限。
bInheritHandle:继承标志。
dwProcessId:进程ID。
C#中使用该函数首先导入命名空间:
using System.Runtime.InteropServices;
然后写API引用部分的代码,放入 class 内部
[DllImport("kernel32.dll")]
public static extern int OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
这个函数有三个参数,第一个是 访问权限,PROCESS_VM_READ or PROCESS_VM_WRITE;第二个是这个是继承标志;第三个是进程ID, 由GetWindowThreadProcessId 获取。例如:
IntPtr hwnd = FindWindow(null, "计算器");
const int PROCESS_ALL_ACCESS = 0x1F0FFF;
const int PROCESS_VM_READ = 0x0010;
const int PROCESS_VM_WRITE = 0x0020;
if (hwnd != IntPtr.Zero)
{
int calcID;
int calcProcess;
GetWindowThreadProcessId(hwnd, out calcID);
calcProcess = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE, false, calcID);
//calcProcess = OpenProcess(PROCESS_ALL_ACCESS, false, calcID);
}
else
{
MessageBox.Show("没有找到窗口");
}