본문 바로가기
프로그래밍/C++

[C+]현재 실행중인 모든 Window 이름 및 경로 가져오기

by 건우아빠유리남편 2011. 7. 12.
반응형
#include #pragma comment(lib, "PSAPI.LIB")
void CtestFindWindowTDoc::FindRunningPgmNameAndPath()
{
	//현재 실행되고 있는 프로그램들의 경로를 구한다.
	HWND h_wnd = FindWindowEx(NULL,NULL, NULL, NULL);
	CString strTitle;
	CString strAppPath;
	//CFileStatus status;
	char szTitle[MAX_PATH];
	char szPath[MAX_PATH];

	while(h_wnd != NULL)
	{
		if(IsWindow(h_wnd) && IsWindowVisible((h_wnd)))
		{
			GetWindowText(h_wnd, szTitle, MAX_PATH);
			DWORD dwProcessId;
			GetWindowThreadProcessId(h_wnd, &dwProcessId);
			HANDLE hHandle = OpenProcess(MAXIMUM_ALLOWED, FALSE, dwProcessId);
			//GetProcessImageFileName(hHandle, szPath, MAX_PATH);
			GetModuleFileNameEx(hHandle, NULL, szPath, MAX_PATH);

			TRACE("[이름] %s\n", szTitle );
			TRACE("[경로] %s\n\n", szPath );
			
			//HINSTANCE hInstance = (HINSTANCE)GetWindowLong(h_wnd, 0);

			strTitle = szTitle;
			if( 0 < strTitle.Find("Site") )			//실행중인 Window의 캡션에 Site가 있으면 파일정보를 읽고 종료
			{
				DWORD dwProcessId;
				GetWindowThreadProcessId(h_wnd, &dwProcessId);
				HANDLE hHandle = OpenProcess(MAXIMUM_ALLOWED, FALSE, dwProcessId);
				//GetProcessImageFileName(hHandle, szPath, MAX_PATH);
				GetModuleFileNameEx(hHandle, NULL, szPath, MAX_PATH);

			}
		}

		h_wnd = FindWindowEx(NULL, h_wnd, NULL, NULL);
	}
}
반응형

댓글