2011-01-10 11 views
2

Ich habe einige Posts über mein Problem gelesen, aber ich habe keine richtige Lösung gefunden. Ich hätte eine vollständige Liste der aktuellen Dateien im Einsatz, zum Beispiel:Liste geöffnete Dateien

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

Mit Filewatcher System kann ich Dateien erhalten, die erstellt/geändert/aktualisiert oder gelöscht werden, aber nicht geöffnet.

Wie kann ich es tun?

+0

Sie meinen "Dateien in Verwendung", betrachten Sie die Bearbeitung Ihrer Post und Titel mit diesem, da es eine genauere Beschreibung dessen ist, was Sie suchen. "geöffnete Datei" könnte auch passen, aber IMO ist weniger genau. –

Antwort

1

Sie können das Tool Process Explorer von Sysinternals verwenden, um diese Informationen zu erhalten, aber ich glaube nicht, dass Sie das einfach per Code durchführen können (kurz, um Process Explorer selbst neu zu implementieren).

0

Die meisten, die Sie mit einfachem Code erreichen können, durchlaufen alle Prozesse und lesen ihre Title - die meisten Programme werden die aktuelle Datei innerhalb ihres Titels z. Notepad wird Fenstertitel von "TextFile.txt - Editor" haben.

Wenn Sie mögen, kann ich einige schnelle Beispiel zusammenziehen.

Um genau das zu erreichen, was Sie wollen, müssen Sie in die Prozesse auf eine niedrige Ebene "einhaken" und ihre Interna sehen - Frédéric Hamidi antwortet so ziemlich.

+0

Es ist in Ordnung, aber wenn ich Datei mit Windows Media Player öffnen habe ich nicht diese Info :( – CeccoCQ

+0

@ Cecco für den Media Player können Sie Teile des Codes von hier aus: http://www.codeproject.com/KB/ cs/wmp_pinvoke.aspx Ich bin mir ziemlich sicher, dass es möglich ist, eine Nachricht zu senden und den "aktuell spielenden" Wert zu erhalten. –

+0

Danke Shadow Wizard, ich werde es sofort versuchen und dich so schnell wie möglich informieren. – CeccoCQ

0

Ich würde vorschlagen, die einfachste Methode wäre, die Handle command-line tool von den gleichen Leuten wie Process Explorer zu verwenden.

Sie könnten vielleicht den Prozess von Ihrem Code aufrufen, und dann analysieren die Ausgabe, die im Grunde nur eine große Liste von geöffneten Dateien (und Registrierungseinträge) in Abschnitte mit dem Prozess, der die Datei als Header geöffnet ist.

Ich denke, dass unter der Haube Handle verwendet die NT-Objekt-Manager-API, so dass es sich lohnt zu prüfen, ob Sie die ganze Sache selbst tun müssen.

+0

Ja, ich dachte über diese Lösung, aber Griffe benötigt Admin-Erlaubnis – CeccoCQ

+0

Hmm, vielleicht könntest du UAC-Erhöhung beantragen, um Admin-Berechtigungen zu erteilen? Ich kenne den Kontext nicht, also ist das vielleicht nicht passend, aber hier ist ein Link: http://goo.gl/5FLgD – Kazar

Verwandte Themen