2010-06-15 84 views
0

我有一個拋出運行時錯誤對話框的程序。有沒有辦法以編程方式檢測哪個可執行文件是來自另一個進程的此對話框的父代?確定哪個可執行文件引發運行時錯誤

+0

可能的重複:http://stackoverflow.com/questions/2265647/how-can-i-get-the-exe-path-of-the-foreground-window/ – 2010-06-15 21:54:04

回答

1

是的。該代碼會是這樣的(檢查省略錯誤):

HWND hWindow = FindWindow(NULL, windowName); 
DWORD processId; 
GetWindowTheadProcessId(hWindow, &processId); 
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, processId); 
GetModuleFileNameEx(hProcess, NULL, buffer, BUFFER_SIZE); 

的GetProcessImageFileName()函數是preferrable到GetModuleFileNameEx(),如果你不與舊平臺有關。

+0

彼得,這工作就像一個魅力。感謝您的幫助。 – 2010-06-16 01:35:47

1

更新:您可以使用GetWindowModuleFileName

窗口句柄得到進程名稱要查找查找處理,你可以get the DesktopWindow然後列舉的那些,直到找到一個與錯誤信息。

+0

對不起,不能得到那些工作:( - GetWindowModuleFileName&GetModuleFileName僅適用於2000,XP和Vista上的調用過程。請參閱http://support.microsoft.com/?id=228469。 – 2010-06-16 01:37:47