Я ищу способ определить, был ли файл выполнен или нет. Я немного посмотрел на LastAccessTime в FileInfo, но это не похоже на изменение файла. Я также посмотрел в FileSystemWatcher, но это тоже не похоже на решение. Есть ли такая вещь, как прослушиватель выполнения файлов, или есть другой способ? Если это помогает, я ищу, чтобы написать прослушиватель папок, который переименовывает .avi-файл внутри него после того, как он был просмотрен/выполнен.Есть ли способ определить, был ли файл выполнен или нет в C#?
ответ
Существует различие между «исполняемым» файлом (например, переносимым исполняемым файлом, например «exe»), и «доступом» к файлу (например, AVI-файл, который «воспроизводится» другим exe).
Похоже, что вы ищете нужное место, и вам понадобится «LastAccessTime», но имейте в виду, что разрешение времени доступа зависит от файловой системы ... На NTFS это полная дата/время, на FAT это просто дата (следовательно, она не изменится, если к ней уже обратились в тот день.)
Привет, Damien, Спасибо за ваш ответ. Файловая система NTFS, и я обращаюсь к «LastAcessTime», используя: DateTime example1 = File.GetLastAccessTime (@path); Код компилируется, но я смущен результатами. «LastAccessTime» не изменяется при доступе к avi с помощью медиаплеера. Фактически он по-прежнему показывает то же самое время и дату, что и при создании файла. Есть предположения? – Shane
@Shane: Возможно, вам придется заставить систему перечитать информацию о файле, см. Мой ответ для деталей. – egrunin
@egrunin: Спасибо, я обязательно посмотрю на это, спасибо за вашу помощь. – Shane
Хммм, я не слишком уверен в том, что выясню, был ли файл запущен, но лучше всего было бы следить за медиаплеером, чтобы определить, когда видео закончило игру.
Будет ли общий способ отслеживать * все * медиаплееры, или он должен будет обновлять свою программу каждый раз, когда появился новый медиаплеер, способный читать файлы .avi? – FrustratedWithFormsDesigner
Фактически, LastAccessTime
может быть тем, что вы хотите, так как файлы AVI не выполняются, только открываются. В прошлом я использовал его точно для цели, которую вы описываете, но не программно.
Просто для полноты: Windows не сохраняет историю выполнения, по крайней мере, не публично.
Edited добавить:
Согласно MSDN, LastAccessTime
ваш лучший выстрел, однако:
Примечание Этот метод может возвращать неточное значение, так как она использует собственные функции, значения которых не могут постоянно обновляться операционной системой.
Но это следует несколько строк позже:
Чтобы получить последнее значение, вызовите метод Refresh.
(Это относится к FileSystemInfo.Refresh
.)
Это все немного тупым, если он не работает точно так, как документировано я не удивлюсь.
Я просто посмотрел на «Дата доступа» с помощью проводника - он не изменяется при открытии файла. После просмотра нескольких файлов он всегда имеет то же значение, что и «Дата создания», и поэтому даже предшествует «Дата изменения» для измененных файлов. –
Кстати, Windows 7 Enterprise 64 бит на NTFS-образованном диске, если это должно получиться. Используемые Notepad и Notepad ++ для открытия текстовых файлов, Windows Photo Viewer для изображений JPEG и 7Zip для некоторых архивов. –
- 1. Есть ли способ определить, сжата ли страница или нет?
- 2. Программно определить, был ли сценарий опубликован или выполнен нормально
- 3. Есть ли способ проверить, был ли скаляр сканирован или нет?
- 4. Есть ли способ определить, приостановлен ли PID Linux или нет?
- 5. Как определить, был ли загружен такой файл или нет?
- 6. Есть ли какой-либо возможный способ определить, был ли файл изображения преобразован в файл слова через OCR или нет?
- 7. Есть ли способ определить, был ли Flash кеширован объект?
- 8. проверьте, был ли выполнен MotionEvent.ACTION_MOVE.
- 9. Есть ли способ определить, был ли нажат элемент щелчком jQuery()?
- 10. есть ли способ узнать, был ли файл изменен?
- 11. Есть ли способ определить, нет ли даты/времени?
- 12. Могу ли я узнать, был ли выполнен javascript-файл?
- 13. Как определить, был ли выполнен вызов finish() в Activity?
- 14. Можно ли определить, был ли пользователь открыт или загружен файл?
- 15. Как определить, был ли статический конструктор выполнен в .net?
- 16. Есть ли способ узнать, был ли класс унаследован в C++
- 17. Есть ли способ найти, имеет ли XCUIElement фокус или нет?
- 18. Outlook AddIn - определить, был ли отправлен элемент назначения или нет
- 19. Есть ли способ показать в журнале запросов, в каком файле или классе был выполнен запрос?
- 20. Есть ли способ определить, переопределена ли функция?
- 21. Есть ли способ узнать, когда исполняемый файл был выполнен в последний раз?
- 22. Есть ли способ определить, заблокирован ли объект?
- 23. Как узнать, был ли файл изменен или нет в php
- 24. Есть ли способ определить, является ли drawerPanel открытым или закрытым?
- 25. Есть ли способ определить, был ли пользователь последним введенным текстом или программой в Python?
- 26. Есть ли способ определить, установлен ли LC_CTYPE в C?
- 27. Есть ли способ проверить, открыт ли файл?
- 28. Есть ли способ (в PHP) обнаружить, был ли скрипт вызван загрузкой jQuery или нет?
- 29. Есть ли способ определить, отключена ли анимация
- 30. Есть ли способ определить, полностью ли загружен внешний файл javascript?
Учитывая ваш случай .avi, это еще одна программа, читающая файл, считающийся исполняющим его? – jball