列出打开的文件

时间:2011-01-10 11:30:33

标签: c# windows

我已经阅读了一些关于我的问题的帖子,但我找不到合适的解决方案。 我会有一个正在使用的当前文件的完整列表,例如:

*.mp3 files opened by Windows Media Player
*.txt files opened by Notepad.exe
*.avi files opened by VLC etc...

使用FileWatcher系统,我可以获取创建/修改/更新或删除但未打开的文件。

我怎么做?

3 个答案:

答案 0 :(得分:1)

您可以使用Sysinternals的Process Explorer工具获取该信息,但我认为您不能轻易地通过代码执行相同的操作(没有重新实现Process Explorer本身)。

答案 1 :(得分:0)

使用简单代码实现的大部分内容都是迭代所有进程并读取它们的Title - 大多数程序会将当前文件放在其标题中,例如记事本的窗口标题为“TextFile.txt - Notepad”。

如果你愿意,我可以把一些简单的例子拉到一起。

为了达到你想要的目标,你必须以某种低级别的方式“勾”入流程并看到他们的内部 - FrédéricHamidi回复几乎涵盖了这一点。

答案 2 :(得分:0)

我建议最简单的方法是使用与Process Explorer相同的人员Handle command-line tool

你可以从你的代码调用进程,然后解析输出,这基本上只是一个打开文件(和注册表项)的大列表,分为几个部分,其中的进程将文件作为标题打开。

我认为在引擎盖下Handle使用NT对象管理器API,因此如果您需要自己完成整个事情,可能值得研究。