alice148 发表于 2010-1-18 20:24:08

API 搜索文件

在官网转了一天还没找到,只得到下面的源码。看不太明,望高手指点下??
只知道DllCall("kernel32.dll", "long", "FindFirstFileA")是查找文件的#RequireAdmin

$res = _FileExists("C:\WINDOWS\System32\Drivers\*.sys")
Msgbox(0, "Result", $res)

Exit


Func _FileExists($sFileName)
    Local $INVALID_HANDLE_VALUE = 0xFFFFFFFF
   
    Local $sWIN32_FIND_DATA = "dword;dword;dword;dword;dword;dword;dword;dword"
    If @Unicode Then
      $sWIN32_FIND_DATA &= ";byte;byte"
    Else
      $sWIN32_FIND_DATA &= ";char;char"
    EndIf

    Local $stWFD = DllStructCreate($sWIN32_FIND_DATA)
   
    Local $stFileName
    If @Unicode Then
      $stFileName = DllStructCreate("byte")
    Else
      $stFileName = DllStructCreate("byte")
    EndIf
    DllStructSetData($stFileName, 1, $sFileName)
   
    Local $stOldVal = DllStructCreate("dword")
   
    If @ProcessorArch = "X64" Then DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", _
                                                                  "ptr", DllStructGetPtr($stOldVal))
   
    Local $hFile = DllCall("kernel32.dll", "long", "FindFirstFileA", _
                                                    "ptr", DllStructGetPtr($stFileName), _
                                                    "ptr", DllStructGetPtr($stWFD))

    If @ProcessorArch = "X64" Then DllCall("kernel32.dll", "int", "Wow64RevertWow64FsRedirection ", _
                                                                  "ptr", DllStructGetPtr($stOldVal))
                  
    If $hFile = $INVALID_HANDLE_VALUE Then Return 0
    Msgbox(0, "Result", $hFile)
    DllCall("kernel32.dll", "int", "FindClose", _
                                    "hwnd", $hFile)
   
    Return 1
EndFunc

sanmoking 发表于 2010-1-19 13:37:13

不会。。帮顶
页: [1]
查看完整版本: API 搜索文件