실행 중인 프로세스의 윈도우 핸들이나 프로세스 아이디를 이용해서
파일 명과 풀패스를 구하는 방법입니다.
Process32Next를 이용하면 파일 명밖에 구할 수가 없습니다.
Win32와 WinCE에서 모두 사용이 가능합니다.
WinCE에서 ToolHelp 라이브러리가 필요하지요.
ULONG pid = 0;
GetWindowThreadProcessId(hwnd, &pid); // 핸들로 프로세스 아이디를 구합니다.
if (pid == 0)
return "";
TCHAR filename[MAX_PATH];
PROCESSENTRY32 pe;
pe.dwSize=sizeof(PROCESSENTRY32);
HANDLE hSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 ); // 실행 중인 모든 프로세스의 스냅샷
if (Process32First( hSnapshot, &pe ))
{
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, 0, pid); // 프로세서 아이디로 핸들을 구하고
if (hProcess)
{
TCHAR szPath[MAX_PATH];
ZeroMemory(szPath, sizeof(szPath));
// wince 경우
GetModuleFileName(hProcess, szPath, MAX_PATH); // 이렇게 하면 됩니다.
// win32 경우
// 이 함수를 사용하기 위해서는 'Psapi.h'라는 헤더, psapi.lib 을 추가해주어야 한다.
GetModuleFileNameEx(hProcess, NULL, szPath, MAX_PATH);
_tcscpy(filename,szPath);
}
}