2009. 5. 15. 18:14
GetModuleFileNameEx()
2009. 5. 15. 18:14 in Programmings/Windows Programming
GetModuleFileNameEx() 함수는 현재 실행된 다른 프로그램의 실팽파일의 경로를 얻을 수 있는 함수이다.
DWORD WINAPI GetModuleFileNameEx( __in HANDLE hProcess,
__in_opt HMODULE hModule,
__out LPTSTR lpFilename,
__in DWORD nSize
);
hProcess - 원하는 모듈을 가지고 있는 프로세스의 핸들.
hModule - NULL로 설정을 하여 실행중인 파일의 경로를 받아올수 있게 한다.
lpFilename - 실행되는 모듈의 경로를 받아올 버퍼.
nSize - 실행되는 파일의 경로를 가져올 버퍼의 크기.
__in_opt HMODULE hModule,
__out LPTSTR lpFilename,
__in DWORD nSize
);
hProcess - 원하는 모듈을 가지고 있는 프로세스의 핸들.
hModule - NULL로 설정을 하여 실행중인 파일의 경로를 받아올수 있게 한다.
lpFilename - 실행되는 모듈의 경로를 받아올 버퍼.
nSize - 실행되는 파일의 경로를 가져올 버퍼의 크기.
ex) GetModuleFileNameEx(hProc, NULL, str, lstrlen(str));
이 함수를 사용하기 위해서는 'Psapi.h'라는 헤더파일을 포함해 주어야 한고, psapi.lib 파일을 추가해주어야 한다.
아래는 '팁소프트'의 게시판에서 가져온 자료이다.
// GetModuleFileNameEx 함수를 이용하여 경로를 얻기위한 함수
// 프로세스의 경로를 얻기 위해서는 프로세스 정보에 접근해야 하는데, 프로세스의 정보에 접근하기 위해선 해당
// 프로세스의 아이디가 필요하다.
// 프로세스의 아이디가 필요하다.
// 프로세스 아이디는 해당 프로세스와 연결된 윈도우 핸들을 통해 알 수 있으며 원하는 프로그램의 윈도우핸들은
// FindWindow 또는 FindWindowEx 함수를 이용해서 찾을 수 있다.
// FindWindow 또는 FindWindowEx 함수를 이용해서 찾을 수 있다.
//
// [ 프로세스 정보에 접근하는 순서 ]
// 1. FindWindow 함수로 원하는 프로세스의 윈도우 핸들을 찾는다.
// 2. 윈도우 핸들을 이용하여 프로세스 아이디를 구한다.
// 3. 프로세스 아이디를 이요아여 프로세스 정보를 오픈한다.
void 클래스명::GetExecuteFileName()
{
void 클래스명::GetExecuteFileName()
{
// "Test"라는 이름을 가진 윈도우를 찾는다.
HWND h_wnd = ::FindWindow(NULL, "Test");
unsigned long process_id = 0;
HWND h_wnd = ::FindWindow(NULL, "Test");
unsigned long process_id = 0;
// 윈도우 핸들을 이용하여 프로세스 아이디를 구한다.
GetWindowThreadProcessId(h_wnd, &process_id);
GetWindowThreadProcessId(h_wnd, &process_id);
char temp[256] = {0,};
// 프로세스 아이디를 이용하여 해당 프로세스 핸들 값을 얻는다.
HANDLE hwnd = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, process_id);
if(hwnd != NULL){
// 정상적으로 프로세스를 열었다면 프로세스의 경로명을 얻는다.
if(GetModuleFileNameEx(hwnd, NULL, temp, 256)) MessageBox(temp);
}
}
더 많은 내용은 '팁소프트'에 방문하면 찾을 수 있을 듯 한데.. ^^; 광고 아님.. ㅎ
'Programmings > Windows Programming' 카테고리의 다른 글
서브클래싱 (0) | 2009.05.26 |
---|---|
GetWindowThreadProcessId() (0) | 2009.05.18 |
DllMain (0) | 2009.04.27 |
DLL 제작 (Explicit) (0) | 2009.04.24 |
DLL 제작 (Implicit 연결) (0) | 2009.04.23 |