对于我当前的程序,有必要检测当前活动文件的路径,例如,我的程序应该在后台运行(没问题),当你输入一个特殊的快捷方式时,它必须查看前台的文件(pdf / a doc / whatever),并找出这个文件的路径。
这是可能的,如果是的话,怎么样?我在Windows机器上使用C ++
非常感谢你!
答案 0 :(得分:0)
给定进程ID
如果你知道文件的PID(进程ID),你可以使用Windows API,正如你在Windows上提到的那样,使用EnumProcesses枚举进程列表,然后使用{{3}返回一个可以使用OpenProcess的句柄。
那里的链接应该提供足够的信息来使用API。基本原则是在给定句柄或进程ID的情况下识别进程,然后使用Windows API获取所需的信息。
给定文件句柄
如果您有文件句柄,可以查看Vista或更高版本上的GetModuleFileNameEx。虽然该链接还提供了使用先前版本的文件映射的信息。
正如其他人所说,如果您自己打开文件,您可能只想使用状态来维护最初使用的位置。
答案 1 :(得分:0)
在Linux上,我会使用lsof - list打开文件和grep,这些都很有趣。 在进程监视器或文件监视器的Windows批处理模式下(来自SysInternals)
我认为这是一个非常类似的问题:How can I determine whether a specific file is open in Windows?
(也许这就是你赢得-1的原因。)
答案 2 :(得分:0)
找到我的问题的解决方案:我可以使用WinAPI函数“FindWindow”和“GetWindowText”。