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("没有找到窗口");   
}

 

posted @ 2012-04-23 13:17  JaysD  阅读(2198)  评论(0编辑  收藏  举报