在资源管理器中,删除一个文件,更改一个文件夹名称,都能及时刷新。这是怎么做到的呢?答案是使用了文件改变通知。
先看一个结构
typedef struct tagSHCHANGENOTIFYENTRY {
DWORD dwEventMask;
LPTSTR pszWatchDir;
BOOL fRecursive;
} SHCHANGENOTIFYENTRY;
要接收文件改变的消息,我们要使用一个窗口hWnd,在窗口创建的WM_CREATE消息处注册:
SHCHANGENOTIFYENTRY schneNotifyEntry;
schneNotifyEntry.dwEventMask = SHCNE_ALLEVENTS;//监视所有事件
schneNotifyEntry.pszWatchDir = NULL;//要监视的目录名,NULL表示所有
schneNotifyEntry.fRecursive = TRUE;//监视目录时,是否递归
SHChangeNotifyRegister(hWnd, &schneNotifyEntry);
在窗口的过程函数里,我们响应WM_FILECHANGEINFO消息
case WM_FILECHANGEINFO:
{
FILECHANGENOTIFY *lpfcn;
FILECHANGEINFO *lpfci;
lpfcn = (FILECHANGENOTIFY *)lParam;
if (NULL == lpfcn)
{
break;
}
lpfci = &(lpfcn->fci);
if (NULL == lpfci)
{
break;
}
else
{
if (FALSE == SHCNEEvent(lpfci))
{
MessageBox(TEXT("SCHNE Event failed"), TEXT("Error"), MB_OK);
}
}
SHChangeNotifyFree(lpfcn);
}
break;
SHCNEEvent函数实现如下:
BOOL SHCNEEvent(FILECHANGEINFO *lpfci)
{
//lpfci->wEventId,事件
//lpfci->dwItem1,旧的文件或目录名
//lpfci->dwItem2,新的文件或目录名
//lpfci->dwAttributes,文件或目录特性
//lpfci->ftModified,文件改变时的时间
//lpfci->nFileSize,文件大小
switch (lpfci->wEventId)
{
case SHCNE_RENAMEITEM:
break;
case SHCNE_CREATE:
break;
case SHCNE_DELETE:
break;
case SHCNE_MKDIR:
break;
case SHCNE_RMDIR:
break;
case SHCNE_MEDIAINSERTED:
break;
case SHCNE_MEDIAREMOVED:
break;
case SHCNE_DRIVEADD:
break;
case SHCNE_DRIVEREMOVED:
break;
case SHCNE_NETSHARE:
break;
case SHCNE_NETUNSHARE:
break;
case SHCNE_ATTRIBUTES:
break;
case SHCNE_UPDATEDIR:
break;
case SHCNE_SERVERDISCONNECT:
break;
case SHCNE_RENAMEFOLDER:
break;
default:
break;
}
return TRUE;
}
根据事件,就可以知道是哪个文件或目录发生了改变。
最后,在hWnd销毁处,要注销:
SHChangeNotifyDeregister(hWnd);
分享到:
相关推荐
在提供的Code文件中,可能包含了一些示例代码,演示了如何在Windows Mobile 6平台上实现状态代理和通知代理的功能。这些代码可能涵盖了以下关键部分: 1. 注册状态改变事件:通过调用适当的API注册事件处理函数,当...
下面将详细阐述如何在Windows Mobile 6上实现GPRS连接,并通过`WMGPRSConn.cpp`和`WMGPRSConn.h`这两个文件中的代码进行讲解。 首先,我们需要了解在Windows Mobile平台上,GPRS连接主要依赖于`CeRas`(Compact ...
从给定的文件信息来看,这段代码主要涉及的是在...总之,这段代码综合运用了Windows Mobile平台上的多种技术,包括图像处理、文件系统操作、注册表修改和UI更新,展示了如何在该平台上实现壁纸设置功能的完整流程。
5. **文件改变通知**:监听文件系统变化的通知API。 6. **遍历文件目录**:遍历目录中的文件和子目录。 ### 七、网络 **概述**: - 网络功能是移动应用的重要组成部分。 - Windows Mobile提供了多种网络编程API。 ...
15. 设置自定义铃声通常在手机的“声音与振动”设置中完成,选择音乐文件作为来电或通知铃声。 16. 修改短信提示音同样在“声音与振动”设置中进行,选择或上传自己喜欢的音频文件。 17. 触摸屏不准可能由于屏幕...
任务栏在Windows Mobile和Windows CE中通常显示在屏幕底部,包含运行中的应用程序图标和通知区域。隐藏任务栏需要更深入的系统交互。一个常见方法是通过修改注册表键值来实现。例如,可以将`HKEY_LOCAL_MACHINE\...
2. **自定义通知样式**:`NotificationSoftKeys`可能指的是在通知中使用的软键按钮,这在Windows Mobile中常见于屏幕下方的虚拟按键。你可以创建自定义的按钮控件,并为它们设置不同的功能,如“确认”、“忽略”或...
在Windows Mobile操作系统中,系统泡泡提示(也称为通知气泡)是一种便捷的信息显示方式,用于向用户传达系统事件、新消息或应用更新等信息。这些提示通常会在屏幕顶部短暂出现,以便用户快速浏览并了解手机状态。...
2. **动态链接库(DLL)卸载策略**:通过修改`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer`下的`AlwaysUnloadDll`键值为1,可以使系统自动卸载未使用的DLL文件,减轻内存负担。...
- 清除\Windows\Startup中的快捷方式或使用SkTools等工具移除通知(消息)队列中的链接,避免删除程序后系统报错。 4. **使用SkTools进行卸载**: - SkTools提供了比系统自带卸载功能更彻底的卸载方式,特别是在...
文件改变通知.................................................................................................................54 遍历文件目录..............................................................
在Windows CE中,文件通知允许开发者注册对特定文件或目录的兴趣,当这些对象发生改变(如创建、删除、重命名或修改)时,系统会发送一个通知。这在需要实时响应文件系统变化的应用程序中非常有用,例如文件同步服务...
1. **界面优化**:SPB能够改变默认的Windows Mobile界面,引入更现代、更直观的图标和滑动效果,使得用户在小屏幕上也能轻松操作。 2. **快速启动菜单**:SPB提供了一个快速启动面板,用户可以自定义常用的应用或...
此外,描述中提到的“也可替换QQ的声音文件”,表明这些无声WAV文件不仅适用于相机快门,还可以用于改变QQ等即时通讯应用的通知声音。QQ是中国流行的即时通讯软件,允许用户自定义各种提示音,包括消息接收、来电等...
Windows Phone 7作为微软早期的移动操作系统,尽管现在已经由Windows 10 Mobile取代,但其在移动开发领域仍有一定的历史价值和学习意义。通过学习这本书,开发者可以了解到以下关键知识点: 1. **Silverlight for ...
使用【WM手机主题制作软件】时,用户需要先了解Windows Mobile系统的主题结构,包括主题文件的组成和文件格式,例如.res文件、.dll文件等。然后,可以通过软件提供的编辑器进行各种元素的编辑和导入,最后导出成适用...