C# OpenProcess 用法
C# OpenProcess用法 . 分类: C#操作内存相关 2011-11-26 23:51 124人阅读 评论(0) 收藏 举报 函数功能:该函数用来打开一个已存在的进程对象,并返回进程的句柄。 函数原型: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("没有找到窗口"); }