SHChangeNotifyRegister

win in in

windows 函式,註冊一個窗體從檔案系統接收訊息
語法:
ULONG SHChangeNotifyRegister( HWND hwnd,
int fSources,
LONG fEvents,
UINT wMsg,
int cEntries,
SHChangeNotifyEntry *pfsne
);
參數介紹:
hwnd 接收訊息的視窗句柄
fSources 一個或者多個標誌,用來指出接收哪些類型的訊息
指示接收訊息的事件類型,將是下列值的一個或多個(註:這些標誌沒有被包括在任何頭檔案中,使用者須在自己的程式中加以定義或者直接使用其對應的數值)
SHCNRF_InterruptLevel
0x0001。接收來自檔案系統的中斷級別通知訊息。
SHCNRF_ShellLevel
0x0002。接收來自Shell的Shell級別通知訊息。
SHCNRF_RecursiveInterrupt
0x1000。接收目錄下所有子目錄的中斷事件。此標誌必須和SHCNRF_InterruptLevel 標誌合在一起使用。當使用該標誌時,必須同時設定對應的SHChangeNotifyEntry結構體中的fRecursive成員為TRUE(此結構體由函式的最後一個參數pfsne指向),這樣通知訊息在目錄樹上是遞歸的。
SHCNRF_NewDelivery
0x8000。接收到的訊息使用共享記憶體。必須先調用SHChangeNotification_Lock,然後才能存取實際的數據,完成後調用SHChangeNotification_Unlock函式釋放記憶體
fEvents
要捕捉的事件,其所有可能的值請參見MSDN中關於SHChangeNotify函式的註解。
wMsg
產生對應的事件後,發往視窗的訊息。
cEntries
pfsne指向的數組的成員的個數。
pfsne
SHChangeNotifyEntry 結構體數組的起始指針。此結構體承載通知訊息,其成員個數必須設定成1,否則SHChangeNotifyRegister或者 SHChangeNotifyDeregister將不能正常工作(但是據我試驗,如果cEntries設為大於1的值,依然可以註冊成功,不知何故)。
如果函式調用成功,則返回一個整型註冊標誌號,否則將返回0。同時系統就會將hwnd指定的視窗加入到操作監視鏈中,當有檔案操作發生時,系統會向hwnd標識的視窗傳送wMsg指定的訊息,我們只要在程式中加入對該訊息的處理函式就可以實現對系統操作的監視了。
如果要退出程式監視,就要調用另外一個未公開得函式SHChangeNotifyDeregister來取消程式監視。該函式的原型如下:
BOOL SHChangeNotifyDeregister(ULONG ulID);

相關詞條

相關搜尋

熱門詞條

聯絡我們