監控資料夾 FindFirstChangeNotification 送出兩次訊息 |
缺席
|
jjbao
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2010-02-03 發送簡訊給我 |
為了要監控資料夾,利用了這三個API
FindFirstChangeNotification. FindNextChangeNotification. FindCloseChangeNotification 在一個thread之中去監看資料夾的行為 下列是thread執行的部分 const unsigned long dwFlags = FILE_NOTIFY_CHANGE_LAST_WRITE; void __fastcall FileNotify::Execute() { unsigned long stat; //---- Place thread code here ---- hNotify = FindFirstChangeNotification( path, true, dwFlags ); while( !Terminated && (hNotify != INVALID_HANDLE_VALUE) ) { stat = WaitForSingleObject( hNotify, 0 ); switch( stat ) { case WAIT_OBJECT_0: ShowMessage( "The Directory Changed!!" ); if( !FindNextChangeNotification(hNotify) ) Terminate(); break; case WAIT_FAILED: Terminate(); } } FindCloseChangeNotification(hNotify); }利用ShowMessage來通知此資料夾有變更 但是當我修改資料夾當中的文件 這個通知會執行兩遍 想請問有方法只讓變更文件這個事件只通知一遍嗎? |
jjbao
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2010-02-03 發送簡訊給我 |
|
syntax
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
沒記錯的話,微軟的技術文章,有看過-其實會引發 4 次
實際忘記在哪裡的,不過是為了找 AppDomain 動態載入時看到的文章,其也是要監視硬碟內 DLL ,以便載入 最後也是自己額外處理 文有提,除有重複引發外,有時還會漏接,這我沒實測過,言詳細經驗的如果有人詳細測試過,分享一下吧, THX 另外跟文章,我忘記找到的過程了,後來一直沒機會在見面,如果有人找到可能、疑似、是我說的文章,煩請附上連結,我也想再看一次 不同的也行,當作多多學習也好, THX ===================引 用 jjbao 文 章=================== 後來解決的方法是不用findnextchangenotification 當第一個事件觸發之後,就把這handle關掉 重新開一個,這樣就不會送出兩次訊息 雖然notification開開關關的,但真的找不到其他方法了 在這邊提供自己的笨方法 如果有人有更好的方法,也歡迎提出來參考參考~ |
HikaruGo
中階會員 ![]() ![]() ![]() 發表:22 回覆:69 積分:88 註冊:2007-12-09 發送簡訊給我 |
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |