【问题标题】:How to get the path of the file which is opened in an application from the running process in c#如何从c#中正在运行的进程中获取在应用程序中打开的文件的路径
【发布时间】:2014-09-25 13:01:33
【问题描述】:

我需要通过进程获取在应用程序中打开的文件的完整路径。

例如,我在记事本中从C:\Users\Admin\Documents\sample.txt 打开了一个txt 文件。而我在桌面上打开了两个记事本。如果我使用Process.GetProcessesByName("notepad");,我可能会获得所有正在运行的记事本实例,我什至可以使用Mainmodule.Filename获得运行进程的完整路径

但我的要求是我需要从进程中获取文件的路径(即sample.txt。有可能吗?

所以我试过了:

Process[] localByName = Process.GetProcessesByName("EA");
string path = localByName[0].Modules[0].FileName;

foreach (Process process in localByName)
{
}

【问题讨论】:

标签: c# asp.net process


【解决方案1】:

这完全取决于打开文本文件的应用程序是否持有打开文件的句柄。例如,Notepad.exe 打开文本文件,复制其内容并释放句柄。只剩下窗口标题栏提供的信息,不多。

相比之下,如果文件是由 winword.exe 打开的,则应用程序将持有文本文件的句柄。在这种情况下,您可以像这样从命令行(或通过 Process.Start())使用 Mark Russinovich 的 handle.exe:

handle.exe test.txt

这将为您提供有关您的应用程序可以解析和使用的 text.txt 完整路径的信息。

【讨论】:

  • @Alex K 非常感谢。
猜你喜欢
  • 2023-01-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
相关资源
最近更新 更多