| 发表于:2007-01-22 14:45:414楼 得分:20 |
我试了,代码没问题啊?? #include "stdafx.h " uint winapi monitordirectory(void *param); int main(int argc, char* argv[]) { char spath[256]; char spath2[256]; strcpy(spath, "c:\\ "); strcpy(spath2, "d:\\ "); _beginthreadex(null,0,monitordirectory,spath,0,null); _beginthreadex(null,0,monitordirectory,spath2,0,null); while (true) { sleep(10000); } return 0; } uint winapi monitordirectory(void *param) { handle hdir; char notify[1024], tmp[256]; dword cbbytes,i; char ansichar[3]; wchar_t unicodechar[2]; file_notify_information *pnotify=(file_notify_information *)notify; file_notify_information *tmp; strcpy(tmp , (char*)param); hdir = createfile( tmp ,file_list_directory, file_share_read ¦ file_share_write ¦ file_share_delete, null, open_existing, file_flag_backup_semantics ¦ file_flag_overlapped, null); if (hdir == invalid_handle_value) { printf( "hdir:invalid_handle_value "); return 0; } while (true) { if(readdirectorychangesw(hdir, notify, sizeof(notify), false, file_notify_change_file_name ¦ file_notify_change_last_write, &cbbytes, null, null)) { // printf( "readdirectorychangesw success\n "); tmp = pnotify; do { switch(tmp-> action) { case file_action_added: printf( "\ndirectory/file added - "); break; case file_action_removed: printf( "\ndirectory/file removed - "); break; case file_action_modified: printf( "\ndirectory/file modified - "); break; case file_action_renamed_old_name: printf( "\ndirectory/file old name - "); break; case file_action_renamed_new_name: printf( "\ndirectory/file new name - "); break; default: break; } //end switch for(i=0;i <tmp-> filenamelength/2;i++) { unicodechar[0]=tmp-> filename[i]; unicodechar[1]=0; zeromemory(ansichar,3); widechartomultibyte(cp_acp,0,unicodechar,-1,ansichar,3,null,null); printf( "%s ",ansichar); } if(tmp-> nextentryoffset !=0) { i = tmp-> nextentryoffset; tmp = (pfile_notify_information) ((lpbyte)tmp+i); } else break; }while(1); } //end if else printf( "readdirectorychangesw error\n "); }//end while return 0; } | | |
|