【お題】王手、そして

こんにちは、honiyonです。
 Windowsについて質問です。

 Explorerであるフォルダを表示しておいた場合に、フォルダ内にファイルの作成・削除等の変更があると自動的に再表示されます。

 これはどのような仕組みになっているのでしょうか?
 もしかして数秒単位でスキャンを行っているだけ?

 任意のフォルダ内の変更を検知するプログラムを作りたいと考えています。
 何か数秒単位でスキャンより効率の良い方法は無いかと考えているのですが...

 宜しくお願いします(..

 

A 回答 (2件)

書き間違い。


FindNextChangeNotification(hNotification);

FindNextChangeNotification(hNotification[1]);
    • good
    • 0
この回答へのお礼

こんにちは、honiyonです。

 ご回答ありがとうございます。
 各APIを調べて早速実験&成功しました(^^)

 ありがとうございました(..

お礼日時:2002/02/01 12:10

かなり適当に書きますが、やりたい事はわかってもらえると思います。



---- メイン側 ----
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);
}
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報