| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 907 人关注过本帖
标题:请教一个在C#中调用API函数时遇到的问题,急!
只看楼主 加入收藏
luobo800
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-2
收藏
 问题点数:0 回复次数:3 
请教一个在C#中调用API函数时遇到的问题,急!
我在编写程序时遇到一个问题,需要调用API函数:OpenProcess;但遇到了一个问题,就是该如何在C#中声明此函数的第一个参数,在C#中应怎么声明第一个参数。相关代码如下:
using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);

int PROCESS_VM_READ= 0x0010;//这行代码是在网上找了一下午才看到的唯一在C#中出现的相关声明,但用在我的程序中时,就不对了,编译能通过,但返回值不对。
int PROCESS_VM_WRITE = 0x0020; //同上。
IntPtr hpid = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE, false, wtpi);

请大家帮帮我,我急需此函数功能。先谢谢各位了!!!

[此贴子已经被作者于2006-3-2 21:00:02编辑过]

搜索更多相关主题的帖子: API函 int PROCESS 声明 OpenProcess 
2006-03-02 20:59
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
收藏
得分:0 

此函数的功能是获取一个已经存在的进程的句柄,
在C#中已经集成了对此函数的托管类System.Diagnostics.Process类
而且使用起来要比这个函数方便的多
比如获取本机上的所有进程:
System.Diagnostics.Process[] ps=System.Diagnostics.Process.GetProcesses();
此时ps是Process 类型的数组,即每个元素是一个Process类的对象
还有根据进程ID找到此进程:
System.Diagnostics.Process p=System.Diagnostics.Process.GetProcessById();
根据进程名称找到此进程:
System.Diagnostics.Process p=System.Diagnostics.Process.GetProcessesByName();
获取进程句柄:
System.IntPtr ProcHandle=p.Handle;


2006-03-02 22:29
luobo800
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-2
收藏
得分:0 

谢谢你的帮助!我看到了,明天我试一下,要是行,我再来感谢你!

2006-03-02 23:16
luobo800
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-2
收藏
得分:0 

谢谢月夜枫华的帮助!
但我试了一下,那样不行,因为我的程序最终目标是要实现读写另一个进程的内存的,只能是用API了,用API就必须要用到OpenProcess来给我要操作的内存指定读写权限。所以那个C#中的方法还是不行的。

2006-03-03 09:40
快速回复:请教一个在C#中调用API函数时遇到的问题,急!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016419 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved