-
-
[求助]findfile总是出错
-
发表于: 2008-9-4 04:47 3217
-
代码是拷贝自罗云彬的教程,在找到两个文件后就会提示错误,请大家帮忙看看代码有什么问题。


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | .386 .model flat, stdcall option casemap :none ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Include 文件定义 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib include ole32.inc includelib ole32.lib include shell32.inc includelib shell32.lib ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 数据段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .data? hInstance dd ? szPath db MAX_PATH dup (?) .const szStart db 'title' ,0 szFilter db '*.*' ,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 代码段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .code include .\_BrowseFolder.asm ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 处理找到的文件 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _ProcessFile proc _lpszFile pushad invoke MessageBox,NULL,_lpszFile,offset szStart,MB_OK popad _ProcessFile endp ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _FindFile proc _lpszPath local @stFindFile:WIN32_FIND_DATA local @hFindFile local @szPath[MAX_PATH]:byte ;用来存放“路径\” local @szSearch[MAX_PATH]:byte ;用来存放“路径\*.*” local @szFindFile[MAX_PATH]:byte ;用来存放“路径\找到的文件” pushad invoke lstrcpy,addr @szPath,_lpszPath ;******************************************************************** ; 在路径后面加上\*.* ;******************************************************************** @@: invoke lstrlen,addr @szPath lea esi,@szPath add esi,eax xor eax,eax mov al,'\' . if byte ptr [esi-1] != al mov word ptr [esi],ax .endif invoke lstrcpy,addr @szSearch,addr @szPath invoke lstrcat,addr @szSearch,addr szFilter ;******************************************************************** ; 寻找文件 ;******************************************************************** invoke FindFirstFile,addr @szSearch,addr @stFindFile . if eax != INVALID_HANDLE_VALUE mov @hFindFile,eax .repeat invoke lstrcpy,addr @szFindFile,addr @szPath invoke lstrcat,addr @szFindFile,addr @stFindFile.cFileName . if @stFindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY . if @stFindFile.cFileName != '.' invoke _FindFile,addr @szFindFile .endif . else invoke _ProcessFile,addr @szFindFile .endif invoke FindNextFile,@hFindFile,addr @stFindFile . until eax == FALSE invoke FindClose,@hFindFile .endif popad ret _FindFile endp ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start: invoke _BrowseFolder,NULL,addr szPath invoke _FindFile,addr szPath invoke ExitProcess,NULL ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> end start |
赞赏
他的文章
- [求助]如何向vb控件发送自定义消息? 3128
- [求助]关于向VB自定义控件投递message 4468
- [求助]WinDbg中如何列出当前被调试进程中所有打开的文件路径? 7088
- [求助]不论F8还是 F7,一按就跑飞 3984
- [求助]远程插入DLL如何获得进程窗口句柄? 4206
赞赏
雪币:
留言: