现在的位置: 首页 > 综合 > 正文

C# OpenProcess用法 .

2017年11月06日 ⁄ 综合 ⁄ 共 921字 ⁄ 字号 评论关闭
函数功能:该函数用来打开一个已存在的进程对象,并返回进程的句柄。

函数原型: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("没有找到窗口");   

}

抱歉!评论已关闭.