`
mmdev
  • 浏览: 13169946 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Windows Mobile中的文件改变通知

阅读更多

在资源管理器中,删除一个文件,更改一个文件夹名称,都能及时刷新。这是怎么做到的呢?答案是使用了文件改变通知。

先看一个结构

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);

分享到:
评论

相关推荐

    详解Windows Mobile 6 状态与通知代理(Code+PPT)

    在提供的Code文件中,可能包含了一些示例代码,演示了如何在Windows Mobile 6平台上实现状态代理和通知代理的功能。这些代码可能涵盖了以下关键部分: 1. 注册状态改变事件:通过调用适当的API注册事件处理函数,当...

    Windows Mobile 6 中GPRS连接代码例子

    下面将详细阐述如何在Windows Mobile 6上实现GPRS连接,并通过`WMGPRSConn.cpp`和`WMGPRSConn.h`这两个文件中的代码进行讲解。 首先,我们需要了解在Windows Mobile平台上,GPRS连接主要依赖于`CeRas`(Compact ...

    windows mobile 设置墙纸代码

    从给定的文件信息来看,这段代码主要涉及的是在...总之,这段代码综合运用了Windows Mobile平台上的多种技术,包括图像处理、文件系统操作、注册表修改和UI更新,展示了如何在该平台上实现壁纸设置功能的完整流程。

    Windows_Mobile实例开发

    5. **文件改变通知**:监听文件系统变化的通知API。 6. **遍历文件目录**:遍历目录中的文件和子目录。 ### 七、网络 **概述**: - 网络功能是移动应用的重要组成部分。 - Windows Mobile提供了多种网络编程API。 ...

    信息安全知识竞赛-WindowsMobile手机操作系统(精选试题).doc

    15. 设置自定义铃声通常在手机的“声音与振动”设置中完成,选择音乐文件作为来电或通知铃声。 16. 修改短信提示音同样在“声音与振动”设置中进行,选择或上传自己喜欢的音频文件。 17. 触摸屏不准可能由于屏幕...

    windows mobile/winCE全屏显示代码

    任务栏在Windows Mobile和Windows CE中通常显示在屏幕底部,包含运行中的应用程序图标和通知区域。隐藏任务栏需要更深入的系统交互。一个常见方法是通过修改注册表键值来实现。例如,可以将`HKEY_LOCAL_MACHINE\...

    C# 高级版Notification for windows mobile(WM)

    2. **自定义通知样式**:`NotificationSoftKeys`可能指的是在通知中使用的软键按钮,这在Windows Mobile中常见于屏幕下方的虚拟按键。你可以创建自定义的按钮控件,并为它们设置不同的功能,如“确认”、“忽略”或...

    Windows Mobile下如何添加,更新,移除系统泡泡提示

    在Windows Mobile操作系统中,系统泡泡提示(也称为通知气泡)是一种便捷的信息显示方式,用于向用户传达系统事件、新消息或应用更新等信息。这些提示通常会在屏幕顶部短暂出现,以便用户快速浏览并了解手机状态。...

    Windows Mobile Phone PPC 注册表优化

    2. **动态链接库(DLL)卸载策略**:通过修改`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer`下的`AlwaysUnloadDll`键值为1,可以使系统自动卸载未使用的DLL文件,减轻内存负担。...

    怎样卸载、删除Windows Mobile系统程序-全方位教程.doc

    - 清除\Windows\Startup中的快捷方式或使用SkTools等工具移除通知(消息)队列中的链接,避免删除程序后系统报错。 4. **使用SkTools进行卸载**: - SkTools提供了比系统自带卸载功能更彻底的卸载方式,特别是在...

    Windows Mobile开发实例

    文件改变通知.................................................................................................................54 遍历文件目录..............................................................

    FileNotify.rar_CE 2005_Win CE SDK_filenoti_notify _win CE 5

    在Windows CE中,文件通知允许开发者注册对特定文件或目录的兴趣,当这些对象发生改变(如创建、删除、重命名或修改)时,系统会发送一个通知。这在需要实时响应文件系统变化的应用程序中非常有用,例如文件同步服务...

    Windows6.5系统的SPB

    1. **界面优化**:SPB能够改变默认的Windows Mobile界面,引入更现代、更直观的图标和滑动效果,使得用户在小屏幕上也能轻松操作。 2. **快速启动菜单**:SPB提供了一个快速启动面板,用户可以自定义常用的应用或...

    无声WAV文件 PPC专用 替代WAV文件 让快门声音变无声

    此外,描述中提到的“也可替换QQ的声音文件”,表明这些无声WAV文件不仅适用于相机快门,还可以用于改变QQ等即时通讯应用的通知声音。QQ是中国流行的即时通讯软件,允许用户自定义各种提示音,包括消息接收、来电等...

    《Windows Phone 7高级编程》随书源代码(下半部分)

    Windows Phone 7作为微软早期的移动操作系统,尽管现在已经由Windows 10 Mobile取代,但其在移动开发领域仍有一定的历史价值和学习意义。通过学习这本书,开发者可以了解到以下关键知识点: 1. **Silverlight for ...

    WM手机主题制作软件

    使用【WM手机主题制作软件】时,用户需要先了解Windows Mobile系统的主题结构,包括主题文件的组成和文件格式,例如.res文件、.dll文件等。然后,可以通过软件提供的编辑器进行各种元素的编辑和导入,最后导出成适用...

Global site tag (gtag.js) - Google Analytics