需要检测当前活动文件的路径,例如,我的程序应该在后台运行(没问题),当你输入一个特殊的快捷方式时,必须查看前台的文件(pdf/a doc/whatever),并找出这个文件的路径。
这是可能的,如果是的话,怎么样?我在Windows机器上使用C++。
非常感谢您!检测当前活动文件的路径
回答
给定一个进程ID
如果你知道文件的PID(进程ID),你可以使用windows API,你提到你在Windows中,通过使用EnumProcesses进程列表枚举然后使用OpenProcess返回一个句柄,您可以使用GetModuleFileNameEx。
这里的链接应该提供足够的信息来使用API。基本原则是识别给定处理或进程ID的进程,然后使用Windows API获取所需的信息。
给定文件句柄
如果你有一个句柄的文件,你可以看看看GetFinalPathNameByHandle在Vista或更高版本。虽然链接还提供了使用先前版本的文件映射的信息。
正如其他人所说,如果您自己打开文件,您可能只想使用状态来维护最初使用的位置。
这适用于.exe和.dll。如果有人打开一个文件“my_work.doc”,我不认为有一个官方的API来找到该文件的名称 - 虽然显然有一种方法可以做到这一点,因为ProcessExplorer可以做到这一点 - 但它不解释它如何在我知道的任何地方工作。 –
我假设有'my_work.doc'的文件句柄,在MSDN上快速搜索显示Vista或更高版本有GetFinalPathNameByHandle,我将编辑 – chrisw
@MatsPetersson:ProcExp将显示命令行IIRC。但是,如果我打开记事本,并使用“另存为...”,您可能需要新文件。记事本不会保持文件句柄打开,所以这也不是解决方案。如果这甚至不能用记事本工作,那么这将会如何可靠? – MSalters
在Linux上,我会使用lsof - 列出打开的文件和grep这些,这很有趣。 过程监视器或文件监视器(Sysinternals公司)
我觉得这是一个非常类似的问题的Windows批处理模式:(也许这就是为什么你赢得-1)How can I determine whether a specific file is open in Windows?
这不是一个类似的问题,因为那样你只知道一个特定的文件是否已经打开,但是你不知道哪个文件是当前活动的文件。 –
找到解决我的问题的方法:我可以使用WinAPI函数“FindWindow”和“GetWindowText”。
- 1. 检测焦点当前活动
- 2. 将当前路径的活动ID传递给组件
- 3. webpack中的当前文件路径
- 4. 获取当前文件的路径
- 5. wx.TextCtrl中的自动检测文件或文件夹路径
- 6. 获取路径的路径,当前类文件
- 7. Xcode 4:我可以通过AppleScript获取当前活动文件的路径吗?
- 8. Android:当活动返回到前一活动时检测
- 9. 检索当前源文件与鱼的路径
- 10. 获取当前文件夹路径
- 11. JSF导航与当前/活动路径不同的CSS类
- 12. 测试路径无法检查文件夹路径
- 13. PHP动态包括基于当前的文件路径
- 14. 检查{{路径()}}是当前{{路径()}}在Symfony2中
- 15. SVG路径检测
- 16. Android - 复杂拖动的检测路径
- 17. 获取当前项目中文件的文件路径
- 18. C#自动检测计算机名称/文件路径
- 19. functions.php中的当前路径
- 20. C#检测路径中的文件夹路口
- 21. C#:选择当前活动文件
- 22. 我如何检测当前是否显示特定的活动?
- 23. 检测当前位置并填充我的活动
- 24. 当前活动只读取检测到的nfc卡
- 25. 检测导航控制器的当前活动子视图
- 26. 来自相对路径的绝对路径与不同的当前文件夹
- 27. 检测路径中的URL
- 28. xslt获取文件当前文件夹路径
- 29. 检查文件夹路径
- 30. firebase托管脚本路径不相对于当前的子文件夹路径
通常情况下,您会将当前打开的文件的文件路径保存在变量中,并从中知道。它是你程序状态的一部分。 –
您可以在此上下文中定义背景和前景吗?你的意思是屏幕上或过程明智吗? – enhzflep
您能否更详细地描述一下您实际尝试实现的目标?所以,如果有人在Word中打开“my_work.doc”,你想用它做什么?为什么这条道路很重要? –