【问题标题】:How to get saved location of All opened Notepad Files in C#如何在 C# 中获取所有打开的记事本文件的保存位置
【发布时间】:2016-01-06 22:28:17
【问题描述】:

如果记事本文件保存在驱动器中,如何检索它的完整路径。例如,一个记事本进程正在运行,它保存在驱动器的某个位置。如何检索其完整路径?使用下面的代码,我可以获得过程详细信息,但不是特定文件的实际路径。

Process[] localByName = Process.GetProcessesByName("notepad");

foreach (Process p in localByName)
{
    string path  =  p.MainModule.FileName.ToString();
}

这将返回 C:\WINDOWS\system32\NOTEPAD.EXE 我也想获取文件的保存位置。

【问题讨论】:

  • 我猜你不能这样做。你想用这个应用做什么?
  • 我想保存详细信息,以便一键重新打开它。它可以包含多个记事本文件
  • 在这里你可以得到你的答案:Please see this thread

标签: c# .net windows


【解决方案1】:

你不能轻易得到这个。您需要特定进程的文件句柄。记事本(至少在我的系统上)似乎没有保持文件句柄对文件打开 - 它打开它然后关闭句柄(因为当我按句柄搜索时进程资源管理器找不到文本文件)。 文件名将在窗口标题中,您也可以通过 Windows API 调用(可能还有进程 api)获取该文本,但这不会为您提供文件路径。

您可以通过进入 Process Explorer 进行测试,在记事本中打开您的文本文件,然后检查“句柄”下的文件。我的没出现

【讨论】:

  • 当我们将系统置于睡眠模式时,它如何管理我们当前的活动?
  • 它不会改变 - 睡眠模式只是一种低功耗“暂停”模式(它仍在消耗电力)。没有什么需要重新启动,它只是继续它停止的地方。记事本不做任何事情,这是一个操作系统和 CPU 级别的程序。 Hibernate 将内存的内容转储到磁盘,然后在您离开休眠状态时恢复它。当您退出睡眠模式时,处理将继续。如果您想要一个在关机后恢复的记事本,它将是一个自定义开发的解决方案,可以写入临时文件,例如 sublime。
  • 即使handleopenfiles 也找不到它。您必须阅读任务列表/进程列表并尝试从窗口的标题(如果暴露)中获取它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多