我想获取当前活动窗口的可执行文件的路径。如何获取当前活动应用程序窗口的路径?
我想:
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()'并且看看会发生什么。 –