• ベストアンサー

フォルダ内の更新を監視する

こんにちは、honiyonです。  Windowsについて質問です。  Explorerであるフォルダを表示しておいた場合に、フォルダ内にファイルの作成・削除等の変更があると自動的に再表示されます。  これはどのような仕組みになっているのでしょうか?  もしかして数秒単位でスキャンを行っているだけ?  任意のフォルダ内の変更を検知するプログラムを作りたいと考えています。  何か数秒単位でスキャンより効率の良い方法は無いかと考えているのですが...  宜しくお願いします(..  

質問者が選んだベストアンサー

  • ベストアンサー
noname#30727
noname#30727
回答No.2

書き間違い。 FindNextChangeNotification(hNotification); ↓ FindNextChangeNotification(hNotification[1]);

honiyon
質問者

お礼

こんにちは、honiyonです。  ご回答ありがとうございます。  各APIを調べて早速実験&成功しました(^^)  ありがとうございました(..

その他の回答 (1)

noname#30727
noname#30727
回答No.1

かなり適当に書きますが、やりたい事はわかってもらえると思います。 ---- メイン側 ---- HANDLE hNotification[3]; void Start() { hNotification[0] = CreateEvent(NULL, TRUE, FALSE, NULL); hNotification[1] = FindFirstChangeNotification(... hNotification[2] = CreateThread(... } void Stop() { SetEvent(hNotification[0]); WaitForSingleObject(hNotification[2]); FindCloseChangeNotification(hNotification[1]); CloseHandle(hNotification[0]); CloseHandle(hNotification[2]); } ---- 通知取得スレッド ---- for(;;) { switch (WaitForMultipleObjects(2, hNotification, FALSE, INFINITE)) { case WAIT_OBJECT_0: // 終了イベント ExitThread(0); case WAIT_OBJECT_0 + 1: // 通知イベント <何らかの方法でメイン側に通知する>; FindNextChangeNotification(hNotification); } }

関連するQ&A