我想獲取當前活動窗口的可執行文件的路徑。如何獲取當前活動應用程序窗口的路徑?
我想:
var
WindowModuleFileName : array[0..100] of Char;
sourceWindow: Hwnd;
begin
sourceWindow := GetActiveWindow;
GetWindowModuleFileName(sourceWindow, PChar(WindowModuleFileName), sizeof(WindowModuleFileName));
ShowMessage(WindowModuleFileName);
end;
但它返回正確的答案,只有當我的應用程序窗口都是無效的。 我在做什麼錯?
想必'GetWindowModuleFileName()'是自1定製包裝器)它不是一個API函數,和2),它被傳遞一個'HWND'作爲參數。 'GetModuleFileName/Ex()'代替'HMODULE'。順便說一句,還有['GetProcessImageFileName()'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms683217.aspx)和['QueryFullProcessImageName()'](http:// msdn.microsoft.com/en-us/library/windows/desktop/ms684919.aspx)可用的API函數。他們不需要'PROCESS_VM_READ'權限。實際上,他們甚至使用'PROCESS_QUERY_LIMITED_INFORMATION'權限。 –
你確定*它不是一個API函數,@Remy? http://msdn.microsoft.com/en-us/library/windows/desktop/ms633517.aspx –
@RobKennedy:我學到了一些新東西。我以前從來沒有聽說過這個API函數。但是,我沒有看到它的文檔中的任何內容禁止它獲取屬於另一個進程的窗口的文件名。 AFAIK該限制僅適用於'GetModuleFileName()',其文檔是Marko引用的。我將不得不測試'GetWindowModuleFileName()'並且看看會發生什麼。 –