0

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

4

3 回答 3

0

Found the solution to my problem: I can use the WinAPI-Function "FindWindow" and "GetWindowText".

于 2013-09-12T21:04:43.160 回答
0

给定一个进程 ID

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

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

给定一个文件句柄

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

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

于 2013-08-22T10:39:01.163 回答
0

在 Linux 上,我会使用 lsof - 列出打开的文件并使用 grep 查找这些文件,这很有趣。在进程监视器或文件监视器的 Windows 批处理模式下(来自 SysInternals)

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

(可能这就是您获得 -1 的原因。)

于 2013-08-22T11:06:48.527 回答