- 论坛徽章:
- 1
|
本帖最后由 yakczh_cu 于 2017-12-24 12:03 编辑
- #include <windows.h>
- #include <stdio.h>
- #include <tchar.h>
- #include <locale.h>
-
- void getname(wchar_t* ws) {
-
- DWORD dwNum = 0;
- dwNum = WideCharToMultiByte(CP_ACP,NULL,ws,-1,0,0,0,0);
- char *psText = new char[dwNum];
- WideCharToMultiByte (CP_ACP,NULL,ws,-1,psText,dwNum,0,0);
-
- printf("\n-----%s----------",psText);
-
- delete []psText;
- }
- int mon( void )
- {
- LPCWSTR lpDir = L"E:\\www\\php";
-
- HANDLE hDir = CreateFileW( lpDir
- , FILE_LIST_DIRECTORY
- , FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_SHARE_DELETE
- , NULL
- , OPEN_EXISTING
- , FILE_FLAG_BACKUP_SEMANTICS
- , NULL );
- if( hDir == INVALID_HANDLE_VALUE )
- return 1;
- setlocale( LC_CTYPE, "" );
- for( ; ; )
- {
- wchar_t buf[ sizeof(FILE_NOTIFY_INFORMATION) + 2*MAX_PATH ];
- DWORD dwBytesReturned = 0;
- BOOL r = ReadDirectoryChangesW( hDir
- , buf, sizeof(buf)
- , true
- , FILE_NOTIFY_CHANGE_LAST_WRITE|FILE_NOTIFY_CHANGE_CREATION | FILE_NOTIFY_CHANGE_DIR_NAME|FILE_NOTIFY_CHANGE_FILE_NAME
- , &dwBytesReturned, NULL, NULL );
- if( r )
- {
- for( FILE_NOTIFY_INFORMATION* pnotify=(FILE_NOTIFY_INFORMATION*)buf; pnotify
- ; pnotify=pnotify->NextEntryOffset?(FILE_NOTIFY_INFORMATION*)((char*)pnotify+pnotify->NextEntryOffset):NULL )
- {
- switch( pnotify->Action )
- {
- case FILE_ACTION_ADDED: wprintf(L"added: "); break;
- case FILE_ACTION_REMOVED: wprintf(L"removed: "); break;
- case FILE_ACTION_MODIFIED: wprintf(L"modified: "); break;
- case FILE_ACTION_RENAMED_OLD_NAME: wprintf(L"renamed old: "); break;
- case FILE_ACTION_RENAMED_NEW_NAME: wprintf(L"renamed new: "); break;
- }
- getname((wchar_t*) pnotify->FileName);
- //wprintf( L"%.*s\n", (int)(pnotify->FileNameLength/sizeof(wchar_t)), pnotify->FileName );
- }
- }
- else
- {
- wprintf( L"failed\n" );
- break;
- }
- }
- CloseHandle( hDir );
- }
- int main(){
- wchar_t* test=L"AAAA.jpg";
- getname(test);
- //mon();
- return 0;
- }
复制代码
回复 4# bruceteen
把pnotify->FileName 转成 char* 的时候,出了点问题,打印出来是
added:
-----22411.png?----------
modified:
-----22411.png? ---------
modified:
-----22411.pngk----------
modified:
-----22411.png濠-------
一次调用发生多个事件的时候,pnotify的每个entry后面会有个c3c3 这个c3c3是分割符吗?
****** 16
0018 0000 0003 0000 000a 0000 006e
002e 0070 006e 0067 c3c3 0018 0000
0003 0000 000a 0000 006e 002e 0070
006e 0067 c3c3 0000 0000 0003 0000
000a 0000 006e 002e 0070 006e 0067
0000 0000 0000 0000 0000 0000
|
|