检测活动文件的路径

时间:2013-08-22 10:33:03

标签: c++ winapi

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

3 个答案:

答案 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”。