2016-01-06 3 views
0

Как получить полный путь к файлу блокнота, если он сохранен на диске. Например, выполняется блокнот, и он сохраняется где-то на диске. Как я могу получить полный путь? Используя нижеприведенный код, я могу получить детали процесса, но не фактический путь к определенным файлам.Как получить сохраненное местоположение всех открытых файлов Блокнота в C#

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

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

это возвращает C: \ WINDOWS \ system32 \ notepad.exe Я также хочу, чтобы спастись местоположение файла.

+0

Я предполагаю, что вы не можете этого сделать. Что вы пытаетесь сделать с этим приложением? –

+0

Я хочу сохранить деталь, чтобы я мог снова открыть его одним щелчком .it может b несколько файлов в блокноте –

+0

Здесь вы можете получить свои анны: [См. Эту тему] (http://stackoverflow.com/questions/9501771/how -to-avoid-a-win32-exception-when-access-process-mainmodule-filename-in-c) – Surya

ответ

1

Вы не можете получить это легко. Вам нужны файловые дескрипторы для определенного процесса. Блокнот (по крайней мере, в моей системе), похоже, не поддерживает дескриптор файла открытым файлом - он открывает его, а затем закрывает дескриптор (потому что проводник процесса не находит текстовый файл при поиске по дескриптору). Имя файла будет в заголовке окна, и вы также можете получить этот текст через вызовы Windows API (и, возможно, процесс api), но это не даст вам путь к файлу.

Вы можете проверить это, перейдя в Process Explorer, открыв текстовый файл в блокноте, а затем проверив файл под «ручками». Моя не появляется.

+0

, когда мы переводим нашу систему в спящий режим, как она управляет нашими текущими действиями? –

+0

он не меняется - спящий режим - это режим паузы низкой мощности (его все еще потребляющая мощность). ничто не нуждается в перезагрузке, оно просто продолжается там, где оно остановилось. Блокнот ничего не делает, это процедура уровня ОС и уровня процессора. Hibernate выгружает содержимое памяти на диск и затем возобновляет его, когда вы покидаете спящий режим. Когда вы выходите из режима сна, обработка продолжается. Если вы хотите, чтобы блокнот возобновлялся после выключения, это было бы специально разработанное решение, которое записывает временные файлы, такие как sublime. –

+0

Даже [дескриптор] (https://technet.microsoft.com/en-us/sysinternals/handle.aspx) или [openfiles] (https://technet.microsoft.com/en-us/library/bb490961.aspx) не находит его. Вам нужно будет прочитать список задач/список процессов и попытаться получить его из названия окна (если он открыт). –

Смежные вопросы