以前总是获取当前进程所在的目录,用 GetModuleFileName 即可。
如何在一进程中获取另一进程的 EXE 文件所在目录呢?
步骤如下:
(1) 先用 Remote Process Viewer 工具看看进程的窗体名;
(2) 获取进程 ID;
(3) 用 GetModuleFileName() 获取目录。
示例代码如下:
HWND hMXNavi = ::FindWindow(NULL,L"MXNavi"); TCHAR tcNaviPath[MAX_PATH]; DWORD dwProcessID = 0; HMODULE hModuleMXNavi; if(NULL != hMXNavi) { GetWindowThreadProcessId(hMXNavi,&dwProcessID); hModuleMXNavi = (HMODULE)OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessID); GetModuleFileName(hModuleMXNavi,tcNaviPath,MAX_PATH); RETAILMSG(1,(L"[ProcessCmdOneKeyNavi]Navi soft path: %s\r\n",tcNaviPath)); } else { }