如何使用API得到系统内某个进程的EXE文件名称?

dai0726 2000-09-05 03:12:00
请问,有哪些API可以使我得到系统内某个进程的EXE文件名称?或者,如何知道某个EXE文件有没有在当前系统内运行?
...全文
320 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2000-09-07
  • 打赏
  • 举报
回复
杀进程:


HANDLE hTerminate;




if(ok){
hTerminate=OpenProcess(PROCESS_TERMINATE,TRUE,pe.th32ProcessID);
if(hTerminate){
TerminateProcess(hTerminate,0);
WaitForSingleObject(hTerminate,0x2727);
CloseHandle(hTerminate);}

CloseHandle(pe.szExeFile);
playpcgame 2000-09-06
  • 打赏
  • 举报
回复
你可以参考MSDN中的Visual Documentation->samples->SDK samples->SDK Tools samples->pview
dai0726 2000-09-05
  • 打赏
  • 举报
回复
我的系统内没有PDH.DLL,老实说我也不会使用,有没有更好的办法呢?
不论怎样,非常非常的感谢大家!
playpcgame 2000-09-05
  • 打赏
  • 举报
回复
使用PDH可以得到当前NT系统中的进程的名称和ID
xiaoya 2000-09-05
  • 打赏
  • 举报
回复
那就不知道了,我在 VC6+Win98 上确实能把所有的进程都找出来
dai0726 2000-09-05
  • 打赏
  • 举报
回复
谢谢,但是我的系统是WINNT 4。0,运行时说kernel32。dll文件中没有CreateToolhelp32Snapshot函数,请问该怎么办?
xiaoya 2000-09-05
  • 打赏
  • 举报
回复
本来想是杀死指定进程的,但是实现不了 :-)
有那位大虾完成了不妨贴出来,这里仅当抛砖引玉了
xiaoya 2000-09-05
  • 打赏
  • 举报
回复
贴上我以前写的一个小程序 Find Proc

#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>
#include <conio.h>

int main(int argc, char* argv[])
{
// printf("Hello World!\n");
HANDLE hand;
BOOL found;
PROCESSENTRY32 pe;
DWORD ID;
bool ok=false;
hand = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
pe.dwSize = sizeof(PROCESSENTRY32);
found = Process32First(hand,&pe);
while(found){
puts(pe.szExeFile);
if(strcmp(pe.szExeFile,"C:\\PROGRAM FILES\\ULTRAEDT\\UEDIT32.EXE") == 0){
ID = pe.th32ProcessID;
ok = true;
break;
}
found = Process32Next(hand,&pe);
}
if(ok){
//TerminateProcess((void*)pe.th32ProcessID,0);
//PostMessage(pe.th32ProcessID,WM_QUIT,0,0);
CloseHandle(pe.szExeFile);
MessageBox(0,"sdjfksd","",MB_OK);
}
getch();
return 0;
}

tibetty 2000-09-05
  • 打赏
  • 举报
回复
实际上FPE2000里面就是使用了这些ToolHelp32函数来做到自己的很多功能的.
playpcgame 2000-09-05
  • 打赏
  • 举报
回复
通过上面的函数取得LPPROCESSENTRY32 结构,其中的
char szExeFile[MAX_PATH];
就是你要的文件名

typedef struct tagPROCESSENTRY32 {
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
DWORD th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
char szExeFile[MAX_PATH];
} PROCESSENTRY32;
typedef PROCESSENTRY32 * PPROCESSENTRY32;
typedef PROCESSENTRY32 * LPPROCESSENTRY32;
「已注销」 2000-09-05
  • 打赏
  • 举报
回复
用CreateToolhelp32Snapshot、Process32First和Process32Next列出内存中的所有进程呀。

HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,
DWORD th32ProcessID);

BOOL WINAPI Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);


BOOL WINAPI Process32Next(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);

1,221

社区成员

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

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