他プロセスでのファイル変更を知るには

解決


GOT  2003-07-26 00:13:41  No: 78777  IP: [192.*.*.*]

Visual C++ で編集中のファイルをテキストエディタで変更すると、
「このファイルは外部のエディタで変更されています。再ロードしますか。」
とメッセージボックスが表示されます。
これと同じ機能を、VBプログラムで実現したいのですが、
どなたか方法をご存知ありませんか。

編集 削除
魔界の仮面弁士  2003-07-26 00:55:25  No: 78778  IP: [192.*.*.*]

.NET Frameworkには、ファイルの変更監視を行うための
System.IO.FileSystemWatcherクラスがありますので、
これを使えばOKでしょう。

なお、.NETではない旧VBの場合は、標準的な方法は用意されていませんが、
APIのFindFirstChangeNotification関数を使って、変更監視ができます。

編集 削除
たかみちえ  URL  2003-07-26 09:03:29  No: 78779  IP: [192.*.*.*]

あれ(同一の機能がいくつかのテキストエディタなどにも見受けられますが)は、
たぶん非アクティブになるときに、開いているファイルの最終更新日時を取得、
その後、アクティブになるときにまた日時を取得して、少しでも違えば再読み込み  という感じだと思います。

  VBでファイルの最終更新日を取得する方法は覚えていませんけど、
何らかの方法でファイルの更新日時を取得し、
WM_ACTIVATEAPPメッセージが来たとき(VBではサブクラス化するしかないですが)に、
両方の比較をすればいいはずです。

  サブクラス化したくないなら、タイマーでって言うのもありですね。

編集 削除
GOT  2003-07-27 12:30:32  No: 78780  IP: [192.*.*.*]

解決しました。
ありがとうございます。

VB.NETだとコモンダイアログみたいに、
System.IO.FileSystemWatcherを簡単に使用できるんですね。

編集 削除