當前位置:編程學習大全網 - 編程語言 - VB DIR 提取長度超過256字節的文件名

VB DIR 提取長度超過256字節的文件名

使用FindFirstFile這個API函數可以解決此類問題。。。

以下是測試代碼,花了半個小時,得加點分。。。

Private?Declare?Function?FindFirstFile?Lib?"kernel32"?Alias?"FindFirstFileA"?(ByVal?lpFileName?As?String,?lpFindFileData?As?WIN32_FIND_DATA)?As?Long

Private?Declare?Function?FindNextFile?Lib?"kernel32"?Alias?"FindNextFileA"?(ByVal?hFindFile?As?Long,?lpFindFileData?As?WIN32_FIND_DATA)?As?Long

Private?Declare?Function?FindClose?Lib?"kernel32"?(ByVal?hFindFile?As?Long)?As?Long

'最大路徑長度和文件屬性常量的定義

Private?Const?MAX_PATH?=?260

Private?Const?FILE_ATTRIBUTE_ARCHIVE?=?&H20

Const?FILE_ATTRIBUTE_COMPRESSED?=?&H800

Const?FILE_ATTRIBUTE_DIRECTORY?=?&H10

Const?FILE_ATTRIBUTE_HIDDEN?=?&H2

Const?FILE_ATTRIBUTE_NORMAL?=?&H80

Const?FILE_ATTRIBUTE_READONLY?=?&H1

Const?FILE_ATTRIBUTE_SYSTEM?=?&H4

Const?FILE_ATTRIBUTE_TEMPORARY?=?&H100

'自定義數據類型FILETIME和WIN32_FIND_DATA的定義

Private?Type?FILETIME

dwLowDateTime?As?Long

dwHighDateTime?As?Long

End?Type

Private?Type?WIN32_FIND_DATA

dwFileAttributes?As?Long

ftCreationTime?As?FILETIME

ftLastAccessTime?As?FILETIME

ftLastWriteTime?As?FILETIME

nFileSizeHigh?As?Long

nFileSizeLow?As?Long

dwReserved0?As?Long

dwReserved1?As?Long

cFileName?As?String?*?MAX_PATH

cAlternate?As?String?*?14

End?Type

Private?Sub?Command1_Click()

Dim?sPath$,?strFileName$

sPath?=?"C:\Temp\壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七八九十壹二三四五六七.txt"

Debug.Print?"文件全路徑長度:";?Len(sPath),?"文件名長度:";?Len(sPath)?-?Len("C:\Temp\")

Dim?lHandle?As?Long?'FindFirstFileA的句柄

Dim?tFindData?As?WIN32_FIND_DATA?'

lHandle?=?FindFirstFile(sPath,?tFindData)

If?lHandle?=?-1?Then

If?tFindData.dwFileAttributes?<>?&H20?Then'文件?&H10?目錄

MsgBox?"沒有找到文件:"?&?vbCrLf?&?vbCrLf?&?sPath

Else

Debug.Print?"文件名稱:";?tFindData.cFileName

Debug.Print?"文件長度:";?tFindData.nFileSizeLow

End?If

Else?'查詢結束或發生錯誤

MsgBox?"查詢結束或發生錯誤"

End?If

FindClose?lHandle

End?Sub

  • 上一篇:sas軟件特點
  • 下一篇:程序員個性面試
  • copyright 2024編程學習大全網