| 词条 | SHChangeNotifyRegister |
| 释义 | 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); |
| 随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。