2011-01-10 17 views
2

私の問題についての記事を読んだことがありますが、適切な解決策が見つかりません。 私は例えば、使用中の現在のファイルの完全なリストを持っているでしょう:開かれたファイルを一覧表示

FileWatcherシステムで
*.mp3 files opened by Windows Media Player 
*.txt files opened by Notepad.exe 
*.avi files opened by VLC etc... 

私が作成/変更/更新または削除が、開かれていないファイルを取得することができます。

どうすればいいですか?

+0

あなたは「使用中のファイル」を意味しています。あなたの後ろのもののより正確な記述であるため、投稿とタイトルの編集を検討してください。 「開かれたファイル」も適合するかもしれないが、IMOの精度はそれほど正確ではない。 –

答えて

1

SysinternalsのProcess Explorerツールを使用して情報を取得することはできますが、コードで簡単に行うことはできません(プロセスエクスプローラ自体を再実装するのには不十分です)。

0

多くのプログラムでは、すべてのプロセスに対して繰り返し実行される簡単なコードで達成することができ、Titleを読むことができます。ほとんどのプログラムは、現在のファイルをタイトル内で使用します。メモ帳のウィンドウタイトルは "TextFile.txt - メモ帳"になります。

あなたが好きなら、私は一緒にいくつかの簡単な例を引き出すことができます。

あなたが望むものを正確に達成するには、いくつかの低レベルの方法でプロセスに「フック」し、その内部を見る必要があります。フレデリック・ハミディの返答はこれをカバーしています。

+0

OKですが、Windows Media Playerでファイルを開くと、この情報が表示されません。( – CeccoCQ

+0

@Cecco for the Media Playerここをクリックすると、一部のコードを取ることができます。http://www.codeproject.com/KB/ cs/wmp_pinvoke.aspxメッセージを送信して「現在再生中」の値を得ることができると確信しています –

+0

シャドウウィザードがありがとうございました。私はすぐにお試しになり、できるだけ早くお知らせします。 – CeccoCQ

0

最も簡単な方法は、プロセスエクスプローラと同じ人のHandle command-line toolを使用することです。

コードからプロセスを呼び出し、出力を解析することができます。これは、ファイルをヘッダーとして開いたプロセスでセクションに分割されたオープンファイル(およびレジストリエントリ)の基本的な一覧です。

ハンドルの下では、HandleはNT Object Manager APIを使用しているので、自分ですべてをやる必要があるかどうか調べる価値があります。

+0

ええ、このソリューションについて考えましたが、 – CeccoCQ

+0

ええと、あなたはUACの仰角を要求して管理者権限を与えることができますか?私はそのコンテキストを知らないので適切ではないかもしれませんが、リンクはこちらです:http://goo.gl/5FLgD – Kazar

関連する問題