我通过枚举进程,获取的PROCESSENTRY32植,怎样通过这个值得到每一个进程的路径,我是在WIN2000,或者 XP下.
解决方案 »
- 窗口透明问题
- 请问为啥msdn上VC2005的Sample Application不能Build呢
- RMB求购EVC开发界面控件
- 生成一个chtmlview,怎么不能显示?
- [讨论]防火墙后UDP的并发服务器的模型。
- 求教Create()函数的用法,主要是参数的设置,谁有例子?解决即给分!
- 一个关于图形学的问题
- warning C4146: unary minus operator applied to unsigned type, result still unsigned 什么警告
- 如何使用文件对话框导入图片传给一picture控件
- 十万火急,有谁知道有什么工具可以打开.DLL文件!!!
- 如何实现在控件中显示键盘输入?
- 如何给基于对话框的应用程序加上状态栏?
GetModuleFileNameEx(hProcess,...)
CString CProcessInfo::GetProcessPath( DWORD idProcess )
{
CString sPath;
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE,
idProcess );
if( NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) )
{
DWORD dw = GetModuleFileNameEx( hProcess, hMod, sPath.GetBuffer( MAX_PATH ), MAX_PATH );
sPath.ReleaseBuffer();
}
CloseHandle( hProcess );
} return( sPath );
}
HANDLE h=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,pid); //pid为 ROCESSENTRY32 中th32ProcessID
HANDLE h=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,processInfo.th32ProcessID);
if (h!=NULL)
GetModuleFileNameEx(h,(void **)processInfo.th32ModuleID,buff,1024);
else
buff[0]=0;
buff中为进程的全路径
当然,GetModuleFileNameEx是windows 2k SDK 的psapi中函数
-----------------------------
进程ID及Module HANDLE也可用psapi中的EnumProcesses,EnumProcessModules得到如果你用过WMI的话,那有更详细的系统/进程信息
if (hDLL != NULL)
{
GetModuleFileNameEx = (LPFNDLLFUNC1)GetProcAddres(hDLL, "GetModuleFileNameExA");
}
你还可以下载安装windows SDK,就有psapi.h及psapi.lib了