使用PSAPI获取进程信息,首先要调用EnumProcesses( )函数,其声明如下:
function EnumProcesses(lpidProcess:LPDWORD;cb:DWORD;
var cbNeeded:DWORD)BOOL
• lpidProcess是一个指向DWORD数组的指针,由函数用进程ID填充。
• cb包含由lpidProcess指定的数组的元素数。
• cbNeeded返回拷贝到lpidProcess数组的实际字节数。用此值除以SizeOf(DWORD)将得到拷贝到
数组的元素数,即正在运行的进程数。
调用这个函数后, lpidProcess指定的数组将包含一些进程的ID。进程ID在自身进程中无用,但可
以传递给OpenProcess() API函数以获取进程的句柄。一旦拥有一个进程句柄,就可以调用针对进程句
柄的其他PSAPI函数,甚至其他Win32 API函数。
procedure TWinNTInfo.Refresh;
var
Count:DWORD;
BigArray[0..$3fff-1] of DWORD;
begin
//获取进程ID数组
if not EnumProcesses(@BigArray,SizeOf(BigArray),Count)
then raise Exception.Create(SFailMessage);
SetLength(FProList,Count div SizeOf(DWORD));
Move(BigArray,FProList[0],Count);
end;
这是书上说的,有点看不懂,EnumProcesses(@BigArray,SizeOf(BigArray),Count)中
SizeOf(BigArray)应该返回的是字节数,但函数的定义要求接受数组的元素数,BigArray定义的是DWORD数组,如果按照上面这样传递参数是不是就出现了问题?除非DWORD是单字节的,但这是不可能的,DWORD是32位的,应该占4字节。
function EnumProcesses(lpidProcess:LPDWORD;cb:DWORD;
var cbNeeded:DWORD)BOOL
• lpidProcess是一个指向DWORD数组的指针,由函数用进程ID填充。
• cb包含由lpidProcess指定的数组的元素数。
• cbNeeded返回拷贝到lpidProcess数组的实际字节数。用此值除以SizeOf(DWORD)将得到拷贝到
数组的元素数,即正在运行的进程数。
调用这个函数后, lpidProcess指定的数组将包含一些进程的ID。进程ID在自身进程中无用,但可
以传递给OpenProcess() API函数以获取进程的句柄。一旦拥有一个进程句柄,就可以调用针对进程句
柄的其他PSAPI函数,甚至其他Win32 API函数。
procedure TWinNTInfo.Refresh;
var
Count:DWORD;
BigArray[0..$3fff-1] of DWORD;
begin
//获取进程ID数组
if not EnumProcesses(@BigArray,SizeOf(BigArray),Count)
then raise Exception.Create(SFailMessage);
SetLength(FProList,Count div SizeOf(DWORD));
Move(BigArray,FProList[0],Count);
end;
这是书上说的,有点看不懂,EnumProcesses(@BigArray,SizeOf(BigArray),Count)中
SizeOf(BigArray)应该返回的是字节数,但函数的定义要求接受数组的元素数,BigArray定义的是DWORD数组,如果按照上面这样传递参数是不是就出现了问题?除非DWORD是单字节的,但这是不可能的,DWORD是32位的,应该占4字节。
解决方案 »
- 怎么提取Webbrowser中特定文字的链接,并点击?
- 一个关于stringgrid显示数据库内容的问题(回调函数)
- 求救:如何用.net在IE中嵌入word界面???
- 在Adoquery中,添加一个fkdata类型的数据字段
- 各位大侠,能不能跟我说说:在动态链接库的调用时,产生“无法定位程序输入点MP4Net_ServerGetSDKVersion于hieserver上”错误,是什么原
- paradox文件如何导入到ACCESS中??
- 我做了一个软件,有人测试可以用,可有人用WINDOWS XP测试软件,说出错??谁留下个E-MAIL,帮我测试一下
- 怎样访问表中的一列?
- WebSnap 应用程序可以改写系统注册表吗?
- 短日期格式和长日期格式的转换问题!
- 用delphi读取出的oracle中的number类型的字段值为何不正确?
- 关于登录界面中密码输入问题???紧急!
如果真的如这样说的话,那应该是要Length(BigArray);才对!