在資源管理器中,刪除乙個檔案,更改乙個資料夾名稱,都能及時重新整理。這是怎麼做到的呢?答案是使用了檔案改變通知。
先看乙個結構
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,在視窗建...