Visual C++ で編集中のファイルをテキストエディタで変更すると、
「このファイルは外部のエディタで変更されています。再ロードしますか。」
とメッセージボックスが表示されます。
これと同じ機能を、VBプログラムで実現したいのですが、
どなたか方法をご存知ありませんか。
.NET Frameworkには、ファイルの変更監視を行うための
System.IO.FileSystemWatcherクラスがありますので、
これを使えばOKでしょう。
なお、.NETではない旧VBの場合は、標準的な方法は用意されていませんが、
APIのFindFirstChangeNotification関数を使って、変更監視ができます。
あれ(同一の機能がいくつかのテキストエディタなどにも見受けられますが)は、
たぶん非アクティブになるときに、開いているファイルの最終更新日時を取得、
その後、アクティブになるときにまた日時を取得して、少しでも違えば再読み込み という感じだと思います。
VBでファイルの最終更新日を取得する方法は覚えていませんけど、
何らかの方法でファイルの更新日時を取得し、
WM_ACTIVATEAPPメッセージが来たとき(VBではサブクラス化するしかないですが)に、
両方の比較をすればいいはずです。
サブクラス化したくないなら、タイマーでって言うのもありですね。
解決しました。
ありがとうございます。
VB.NETだとコモンダイアログみたいに、
System.IO.FileSystemWatcherを簡単に使用できるんですね。
ツイート | ![]() |