UINT GetWindowModuleFileName (HWND hwnd, LPTSTR lpszFileName, UINT cchFileNameMax); BOOL MyGetWindowExeFilename (HWND hWnd, char * pszFilename, int iSizeofBuff) { HANDLE hProc; HMODULE ahMod [10]; DWORD dwNeeded; DWORD dwPid; BOOL bResult = FALSE; // Get PID corresponding to this window handle. GetWindowThreadProcessId (hWnd, &dwPid); hProc = OpenProcess (PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, dwPid); if (hProc) { if (EnumProcessModules (hProc, ahMod, sizeof(ahMod), &dwNeeded)) { // we're only interested in the first module. if (GetModuleBaseName (hProc, ahMod[0], pszFilename, iSizeofBuff)) { bResult = TRUE; } } CloseHandle (hProc); } return bResult; }