则两天在做文件操作的一些帮助函数,则其中用到了获取进程的一些方法,在这里留个笔记,下次用到可以学习下。
1.获取进程的名称或者路径。
bool FileHelper::GetExeName(std::string& strExeName)
{
strExeName.empty();
char tmp[MAX_PATH] = {0};
//获取当前进程的ID
DWORD processID = ::GetCurrentProcessId();
//通过进程ID获取到进程的句柄
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
if (NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
//获取当前模块的句柄
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
//获取进程的绝对路径
GetModuleFileNameEx(hProcess, hMod, tmp, MAX_PATH);
if(NULL == tmp || strcmp(tmp,"") == 0)
{
return false;
}
}
}
CloseHandle( hProcess );
char exeName[_MAX_FNAME]={0};
char szExe[_MAX_EXT]={0};
_splitpath( tmp, NULL,NULL, exeName, szExe );
if(strlen(exeName))
{
strExeName = exeName;
strExeName += sz