首页
社区
课程
招聘
[求助]findfile总是出错
发表于: 2008-9-4 04:47 3217

[求助]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

[注意]看雪招聘,专注安全领域的专业人才平台!

上传的附件:
收藏
免费
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册