正在检测活动文件的路径

Detecting path of active file

本文关键字:路径 活动文件 检测      更新时间:2023-10-16

对于我当前的程序,有必要检测当前活动文件的路径,例如,我的程序应该在后台运行(没有问题),当你输入一个特殊的快捷方式时,它必须查看前台的文件(pdf/a doc/whatever),并找出该文件的路径
这可能吗?如果可能,怎么做?我在Windows机器上使用C++
非常感谢!

给定进程ID

如果您知道文件的PID(进程ID),您可以使用windows API,正如您提到的那样,使用EnumProcesses枚举进程列表,然后使用OpenProcess返回一个句柄,您可以在.上使用GetModuleFileNameEx

那里的链接应该提供足够的信息来使用API。基本原则是根据进程的句柄或进程ID来识别进程,然后使用windows API获取所需的信息。

给定文件句柄

如果您有该文件的句柄,可以查看Vista或更高版本上的GetFinalPathNameByHandle。尽管该链接还提供了有关使用早期版本的文件映射的信息。

正如其他人所说,如果你自己打开文件,你可能只想使用state来维护最初使用的位置

在Linux上,我会使用lsof-list打开的文件和grep,这很有趣。在进程监视器或文件监视器的Windows批处理模式下(来自SysInternal)

我认为这是一个非常类似的问题:如何确定特定文件是否在Windows中打开?

(也许这就是你获得-1的原因。)

找到了解决问题的方法:我可以使用WinAPI函数"FindWindow"answers"GetWindowText"。