Wie kann man wissen, welche Datei zu einem beliebigen Zeitpunkt von einer Anwendung geöffnet wird?

8

Ich bin neu hier, also habe ich nicht die Zeit, etwas beizutragen, bevor ich euch um Hilfe ersuche, also entschuldigt mich dafür.

Ich bin mir nicht sicher, ob das möglich ist, aber ich würde gerne die geöffnete (n) Datei (en) einer Anwendung herausfinden.

Hier meine ich nicht die "internen" geöffneten Dateien, sondern diejenigen, die vom Endbenutzer geöffnet werden (entweder durch Aufruf der Handlings-App durch Dateiassoziation oder explizit in der App). Denken Sie * .cs oder * .vb Dateien in Visual Studio (ja, ich bin ein MS-Typ) oder Textdateien im Editor.

Ich habe im MSDN-Dokument "Win Shell" nach "Verben" gesucht, erwähnt aber nur das Aufrufen und keine Möglichkeit, Informationen über aufgerufene Verben zu überprüfen. Ich habe auch auf DDE geschaut, aber es sieht wie eine Allzweckeinrichtung aus und passt hier nicht in meinen Fall.

Ich muss sagen, dass meine Situation durch das Googlen schwer zu lösen ist, weil es keine eindeutigen Schlüsselwörter gibt, also würde dies definitiv menschliche Aufmerksamkeit brauchen:)

Danke

    
im_chc 19.11.2009, 16:16
quelle

4 Antworten

3

Wenn Sie einen laufenden Prozess auf offene Handles untersuchen möchten, können Sie ProcessExplorer oder verwenden die Befehlszeilenanwendung Handle .

ProcessExplorer ist im Wesentlichen der Windows Task Monitor auf Steroiden. Es ist ein sehr nützliches Werkzeug im täglichen Computing sowie für das Debugging von Prozessen. Ich empfehle es sehr.

    
Ben S 19.11.2009 16:21
quelle
1

Ich nehme an, dass Sie ein C # -Programmierer sind und einen Code dafür benötigen. Soweit ich weiß, gibt es keine einfache Programmier-API, um diese Informationen herauszufinden - es ist nicht die Win32-API, sondern die Windows-interne API. Die SysInternals-Suite von Befehlszeilen-Dienstprogrammen ( Ссылка ) kann jedoch zum Ermitteln dieser Informationen verwendet werden .

Die gewünschte Anwendung heißt Handle.

Es gibt keine Unterschiede zum OS zwischen dem, was Sie "interne Dateien" nennen (vermutlich solche, die vom Programm ohne Benutzereinbindung geöffnet wurden) und solchen, die der Benutzer absichtlich verwendet hat. Sie müssen diese Information angeben, indem Sie die Erweiterung der Datei angeben. Wenn Sie beispielsweise alle in Word geöffneten Word-Dateien suchen möchten, ist folgende Befehlszeile erforderlich:

handle -p winword.exe | finde ".doc"

Wenn Sie eine App in C # schreiben, können Sie die folgende Klasse verwenden, um eine Liste geöffneter Dokumente zurückzugeben, die Ihrem Muster entsprechen (beachten Sie, dass dies ein Formular namens ShowOpenAppFilesForm mit zwei Textfeldern appExeNameTextBox und fileExtensionTextBox und ein Listenfeld openFileListBox ):

%Vor%

[Übrigens, DDE ist jetzt meistens Toast.]

    
Mark Bertenshaw 19.11.2009 17:41
quelle
0

Es gibt ein Dienstprogramm in SysInternals, das die Dateien auflisten kann, die von einer Anwendung Link geöffnet wurden hier

    
t0mm13b 19.11.2009 16:21
quelle
0

Eine schnelle Funktion, die nur zum Sperren von Dateien funktioniert, ist eine Shell-Erweiterung namens WhoLockMe . Es ist nicht so leistungsfähig wie einige der anderen Tools hier, aber es ist ein Kontextmenü im Windows Explorer.

    
Broam 19.11.2009 16:25
quelle

Tags und Links