如何得到进程程序名

lobuddha 2003-10-18 08:01:51
使用CreateToolhelp32Snapshot函数好象不行,

HANDLE snapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 proEntry;
char strBuffer[MAX];

proEntry.dwSize = sizeof(proEntry);
BOOL nextPro=Process32First(snapShot, &proEntry);
while(nextPro)
{
strcpy(strBuffer, proEntry.szExeFile);
}
nextPro=Process32Next(snapShot, &proEntry);
}
CloseHandle(snapShot);
以上方式没法得到进程程序名, 不知是何解?
...全文
68 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjy1001 2003-10-20
  • 打赏
  • 举报
回复
学习学习
其实 老妖的网站里早有相类似的文章了

唉 大家不能在提问题前 搜下以前的帖子吗????
ccrun.com 2003-10-18
  • 打赏
  • 举报
回复
文档标题:用快照枚举当前系统中所有进程
关键字: 快照,枚举所有进程,CreateToolhelp32Snapshot,PROCESSENTRY32 
作者: ---------- 阅读:169 加入时间:2003-10-14 本文来自http://www.ccrun.com

--------------------------------------------------------------------------------
如何用快照枚举当前系统中所有进程,近来问这个问题的朋友比较多,所以干脆贴上来算了。呵呵。:D

在窗体上添加一个ListView,设置其ViewStyle为vsReport,在ListView上添加三个Column,再添加一个Button。


#include <tlhelp32.h>
#include "stdio.h"

void __fastcall TMainForm::Button1Click(TObject *Sender)
{
// Find each process and display it.
HANDLE snapshot ;
PROCESSENTRY32 processinfo ;
processinfo.dwSize = sizeof (processinfo) ;
snapshot = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0) ;
if (snapshot == NULL)
return ;

bool status = Process32First (snapshot, &processinfo) ;
while (status)
{
TListItem *li = ListView1->Items->Add () ;
String buffer ;
int length ;
buffer.SetLength (512) ;
length = sprintf (buffer.c_str (), "%08X", processinfo.th32ProcessID) ;
buffer.SetLength (length) ;
li->Caption = buffer;
buffer.SetLength (512) ;
length = sprintf (buffer.c_str (), "%08X", processinfo.th32ParentProcessID) ;
buffer.SetLength (length) ;
li->SubItems->Add (buffer) ;
li->SubItems->Add (processinfo.szExeFile) ;
status = Process32Next (snapshot, &processinfo) ;
}
}

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧