vc中在运行其它应用程序时如何获得exe文件路径
答案:1 悬赏:0
解决时间 2021-03-07 18:33
- 提问者网友:沉默的哀伤
- 2021-03-06 18:19
vc中在运行其它应用程序时如何获得exe文件路径
最佳答案
- 二级知识专家网友:哥在撩妹请勿打扰
- 2021-03-06 18:49
#include <tlhelp32.h> // for CreateToolhelp32Snapshot
#include <psapi.h>
#pragma comment(lib, "psapi")
static
bool GetPathByProcessID(DWORD pid,TCHAR* FilePath)
{
HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
if (!hProcess)
{
// tracef("无权访问该进程");
return false;
}
DWORD ret= GetModuleFileNameEx(hProcess, NULL, FilePath, MAX_PATH) ;
// tracef(_T("GetModuleFileNameEx : %s ") , ret ? _T("successfully") : _T("failed") );
CloseHandle(hProcess);
return ret!=0;
}
#include <vector>
using namespace std;
bool GetAllProcessPath(vector<string> & Paths)
{
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
trace("无法创建进程的快照");
return false;
}
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hProcessSnap, &pe32))
{
trace("无法获得进程列表");
CloseHandle (hProcessSnap);
return false;
}
do
{
TCHAR FilePath[MAX_PATH];
if ( GetPathByProcessID(pe32.th32ProcessID,FilePath) )
{
trace(FilePath);
Paths.push_back(FilePath);
}
} while (Process32Next(hProcessSnap, &pe32));
CloseHandle (hProcessSnap);
return true;
}
#include <psapi.h>
#pragma comment(lib, "psapi")
static
bool GetPathByProcessID(DWORD pid,TCHAR* FilePath)
{
HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
if (!hProcess)
{
// tracef("无权访问该进程");
return false;
}
DWORD ret= GetModuleFileNameEx(hProcess, NULL, FilePath, MAX_PATH) ;
// tracef(_T("GetModuleFileNameEx : %s ") , ret ? _T("successfully") : _T("failed") );
CloseHandle(hProcess);
return ret!=0;
}
#include <vector>
using namespace std;
bool GetAllProcessPath(vector<string> & Paths)
{
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
trace("无法创建进程的快照");
return false;
}
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hProcessSnap, &pe32))
{
trace("无法获得进程列表");
CloseHandle (hProcessSnap);
return false;
}
do
{
TCHAR FilePath[MAX_PATH];
if ( GetPathByProcessID(pe32.th32ProcessID,FilePath) )
{
trace(FilePath);
Paths.push_back(FilePath);
}
} while (Process32Next(hProcessSnap, &pe32));
CloseHandle (hProcessSnap);
return true;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯