Список открытых файлов - PullRequest
       2

Список открытых файлов

2 голосов
/ 10 января 2011

Я прочитал несколько сообщений о своей проблеме, но я не нашел правильного решения.У меня был бы полный список текущих используемых файлов, например:

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

С системой FileWatcher я могу получить файлы, которые созданы / изменены / обновлены или удалены, но не открыты.

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 10 января 2011

Вы можете использовать Process Explorer от Sysinternals для получения этой информации, но я не думаю, что вы можете легко сделать то же самое с помощью кода (если не считать переопределение самого Process Explorer).

0 голосов
/ 10 января 2011

Я бы предположил, что самый простой способ - использовать инструмент командной строки Handle от тех же людей, что и Process Explorer.

Возможно, вы можете вызвать процесс из своего кода, а затем проанализировать вывод, который в основном представляет собой большой список открытых файлов (и записей реестра), разделенный на разделы с процессом, который открыл файл в качестве заголовка.

Я думаю, что под капотом Handle используется API-интерфейс NT Object Manager, так что, возможно, стоит разобраться, если вам все это нужно сделать самостоятельно.

0 голосов
/ 10 января 2011

Самое большее, чего вы можете достичь с помощью простого кода, - это итерация по всем процессам и чтение их Title - большинство программ используют текущий файл внутри своего заголовка, например. Блокнот будет иметь заголовок окна «TextFile.txt - Блокнот».

Если хотите, я могу привести небольшой пример.

Чтобы достичь именно того, чего вы хотите, вам нужно «зацепить» процессы каким-то низкоуровневым способом и увидеть их внутренние компоненты - ответ Фредерика Хамиди в значительной степени охватывает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...