Windows Mobile中的檔案改變通知

2021-05-02 19:40:50 字數 2050 閱讀 4957

在資源管理器中,刪除乙個檔案,更改乙個資料夾名稱,都能及時重新整理。這是怎麼做到的呢?答案是使用了檔案改變通知。

先看乙個結構

typedef struct tagshchangenotifyentry 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中GPRS連線網路

windows mobile程式中如果要使用http或socket連線伺服器,需要先連線網路。可以使用connmgrestablishconnectionsync函式來連線。如果知道乙個接入點的名稱,則可以通過connmgrenumdestinations得到相應接入點的guiddestnet。然後...

Windows Mobile中GPRS連線網路

windows mobile程式中如果要使用http或socket連線伺服器,需要先連線網路。可以使用connmgrestablishconnectionsync函式來連線。如果知道乙個接入點的名稱,則可以通過connmgrenumdestinations得到相應接入點的guiddestnet。然後...

Windows Mobile中的檔案改變通知

在資源管理器中,刪除乙個檔案,更改乙個資料夾名稱,都能及時重新整理。這是怎麼做到的呢?答案是使用了檔案改變通知。先看乙個結構 typedef struct tagshchangenotifyentry shchangenotifyentry 要接收檔案改變的訊息,我們要使用乙個視窗hwnd,在視窗建...