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

解決


GOT  2003-07-26 09:13:41  No: 78777

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


魔界の仮面弁士  2003-07-26 09:55:25  No: 78778

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

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


たかみちえ  URL  2003-07-26 18:03:29  No: 78779

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

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

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


GOT  2003-07-27 21:30:32  No: 78780

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加