在NT下如何枚举进程?(300分)

  • 主题发起人 主题发起人 cAkk
  • 开始时间 开始时间
C

cAkk

Unregistered / Unconfirmed
GUEST, unregistred user!
我见到的方法只能在9x下面用,以前pipi介绍过一个psapi.dll可以在<br>NT下面用,但是我不想带一个DLL.<br><br>有没有别的办法?
 
没举进程是什么意思?那个enum.....?
 
在9x下可以用 SnapshotHandle/TProcessEntry32;实现.<br>
 
NT下用PSAPI的EnumProcesses枚举很简单。<br><br>不用PSAPI的话,VC有个例子TLIST可以。<br>你那儿没有的话,我可以寄去。
 
hehe,300分好多啊,cAkk你到madshi的主页上去下载enumstuff.zip里面有<br>一个函数getprocesslist可以在所有版本windows下运行,哈哈<br>赚翻了。
 
如果Tlist不用附加的DLL,那就给我即一个把.<br>cakk2000@163.net
 
呀! 我在他的主页上下载过那个东东,不过不知道能在NT下面用!<br>我晚上看看.<br><br>O*O请继续寄你的TLIST,我对比以下.
 
madshi是谁呀,什么网址?
 
http://nettrash.com/users/madshi/
 
下仔了enumstuff.zip,madshi老师用的是PSAPI。
 
psapi最简单,不过还有一个办法,标准的办法, ms的进程列表都是用它<br><br>Performance Data Helper<br><br>只需要访问注册表。<br><br>例子等我一下(要有点耐心),不要急着把分送出去了。<br><br>另外 listview 的有办法了。<br><br>找到 index 后<br><br>windows.SetFocus(h); &nbsp;//要把输入焦点放在listview上<br>ListView_EditLabel(h,index); &nbsp;//在第index个条目进入编辑修改状态<br>ListView_EditLabel(h,-1); &nbsp;//退出编辑修改状态<br><br>不仅可以翻屏,还可以选择了它(selection),<br>连ListView_SetItemState也不用了,也不用考虑它是第几列
 
PSAPI是什么意思? 和PSAPI.DLL有什么关系?<br><br>我看madshi的代码,他好像是从kernal里面直接GetProcaddress的.
 
GetProcaddress 是从psapi.dll中取它export的地址。<br><br>另外,listview的这个解决办法你看如何。
 
1.你们是不是都搞错了? 在刚才下载的代码里面,凡是涉及到psapi的都被注释掉了,<br>&nbsp; 真正的函数都是<br>&nbsp; GetModuleHandle('kernel32');<br>&nbsp; 从kernal里面取出来的吧?<br><br>况且,madshi的主页上明确说了:"不需要psapi"的.<br><br>2.listview的问题: 是个好主意. ;-)
 
那你看它 get 了什么函数的地址?madshi的我现在去不了,寄一个<br>rbx-rbx@21cn.com (rbx-rbx中间是 减号 )好吗<br><br>我研究一下
 
的确,是注释掉了,是访问注册表,与TLIST的方法一样。
 
访问注册表 就是使用 Performance Data Helper 了
 
今天不知道是我见鬼了,还是你们见鬼了,madshi的代码怎么会用的是注册表?????<br>代码里面一句和注册表相关的都没有! 而且连uses部分也只有一个windows.<br><br>怎么回事? 我看花眼了????
 
见鬼了。<br><br>function NT4_EnumProcessesAndThreads里明明有个<br>RegQueryValueEx(HKEY_PERFORMANCE_DATA,....);<br><br>这个API就是声明在windows.pas里的。
 
后退
顶部