请帮我获得进程程序的的长文件名?
5512 2004-04-11 03:20:00 我的目的是想得到系统中进程对应的执行文件的长文件名(包括完整路径)
DWORD m_ProcessIndex[200];
PROCESSENTRY32 processListStr;
.............
m_ProcessIndex[i]=processListStr.th32ProcessID; ////这是已经得到的进程ID
HANDLE ProcessHandle;
CString msg;
ProcessHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,m_ProcessIndex[i]);
//利用数组ID指定的获得存在的一个进程的句柄
if(ProcessHandle)
{
char PName[MAX_PATH];
HMODULE hModule;
msg.Format("notepad.exe");
hModule=GetModuleHandle(msg.GetBuffer(msg.GetLength()));
///////是不是只能得到自身进程的模块
MessageBox(msg);
if(!hModule) MessageBox("得到模块名为空");
GetModuleFileName(hModule,PName,sizeof(PName));
//GetModuleFileName(
MessageBox("该进程的完整路径是:");
MessageBox(PName);
}
但hModule总是为空,所以PName得到的总是自身进程程序的完整路径,
我在VS.net中用
EnumProcessModules(hProcess,&hModule,sizeof(hModule),&cbNeeded)
总是编译错误:
(XFKV error LNK2019: 无法解析的外部符号 _EnumProcessModules@16 ,该符号在函数 "public: void __thiscall XF_Process::OnBnClickedButton1(void)" (?OnBnClickedButton1@XF_Process@@QAEXXZ) 中被引用
)
但我已经加了#include "TLHELP32.H";
上面的代码肯定是有错的,那我想得到进程程序的完整路径该咱办呢?(请赐教)