Tuesday, October 27, 2009

HÀM API DÙNG QUẢN LÝ FILE VÀ FOLDER TRONG VISUAL BASIC P1

1. Khái quát

Khi cấu trúc của Windows được tạo ra, Microsoft có ý định tạo ra một số lớn các chức năng lập trình có giá trị cho mọi chương trình dựa trên nền Windows. Chiến thuật này phục vụ hai mục đích, cung cấp ứng dụng Windows một cái nhìn và cảm giác nhất quán cũng như khiến cho người lập trình khỏi phải sao chép lại các hàm mà đã được mã hóa và debug. Những hàm này được lưu trữ trong một dãy các thư viện liên kết động ( DLL ) và được biết như là giao diện lập trình ứng dụng (API). Từ khi phát triển thành hệ điều hành 32bit, Windows 95’ những phiên bản mới được biết đến như Win32 API. Một vài hàm trong Win32 API thì có giá trị như những lệnh Visual Basic, nhưng phần lớn thì được truy cập chỉ bằng cách gọi hàm API.


2.Các hàm API cơ bản dùng để quản lí File và Folder

2.1 Hàm truy xuất File

Ø GetLogicalDrives

Ý nghĩa: Xác định các kí tự của tất cả ổ đĩa luận lí trên hệ thống.

Khai báo:


Declare Function GetLogicalDrives Lib "kernel32" Alias "GetLogicalDrives" ( ) As
Long

Giá trị trả về: Các bit trong kết quả này chỉ định các ổ đĩa luận lí tồn tại trên hệ thống.

Ø GetDriveType

Ý nghĩa: Hàm này cho biết loại của một đĩa cụ thể cho trước. Sử dụng kèm với hàm
GetLogicalDriveStrings để biết

được loại của những đĩa do hàm GetLogicalDriveStrings tìm được.

Khai báo:


Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive
As String) As Long


Tham số


Mô tả


Ndrive


Một chuỗi chứa đường dẫn đến thư mục gốc của đĩa.

Các hằng số:


Const DRIVE_REMOVABLE = 2
Const DRIVE_FIXED = 3
Const DRIVE_REMOTE = 4
Const DRIVE_CDROM = 5
Const DRIVE_RAMDISK = 6

Giá trị trả về: 0 nếu đĩa không thể xác định được, 1 nếu thư mục đã chỉ định
không tồn tại. Một trong số các

hằng chỉ ra loại đĩa được mô tả bên trên thì thành công.


Ø FindFirstFile

Ý nghĩa: Tìm File - Folder dựa trên tên File đã cho.

Khai báo:


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


Tham số


Ý nghĩa


LpFileName


Tên File cần tìm. Có thể bao gồm các kí tự tìm kiếm ( *, ? ). Có thể bao
gồm đường dẫn đầy đủ.


LpFindFileData


Một cấu trúc dữ liệu dùng để lưu trữ thông tin về File tìm được.


Kiểu dữ liệu:

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

Giá trị trả về: Một điều quản tìm kiếm nếu thành công, INVALID_HANDLE_VALUE nếu
có lỗi. Điều quản này

nên được đóng bởi hàm FindClose khi nó không còn cần thiết.

Điều quản trả về từ hàm này được sử dụng như một tham số cho hàm FindNextFile. Điều này cho phép ta lấy tất cả các File mà được so sánh với tên File đã được chỉ định bởi tham số lpFileName.


Ø FindNextFile

Ý nghĩa: Sử dụng kết hợp với hàm FindFirstFile để tìm File kế tiếp trong đường
dẫn được chỉ ra trong hàm

FindFirstFile. Hàm này tìm File kế tiếp ngay sau File đầu tiên hoặc File sau File được tìm thấy ở lần gọi hàm FindNextFile trước đó và được gọi lại nhiều lần cho đến khi tìm ra hết tất cả các File.

Khai báo:


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


Tham số


Ý nghĩa


HfindFile


Handle trả về từ hàm FindFirstFile.


LpFindFileData


Một cấu trúc dữ liệu dùng để lưu trữ thông tin của File tìm được.

Giá trị trả về: True (số khác 0 nếu thành công), 0 nếu có lỗi. Thiết lập
GetLastError thành

ERROR_NO_MORE_FILES khi không còn File nào để lấy.


Ø FindClose

Ý nghĩa: Chấm dứt việc tìm File đã được gọi bởi hàm FindFirstFile.

Khai báo:


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


Tham số


Ý nghĩa


HfindFile


Một Handle được cung cấp bởi hàm FindFirstFile.

Giá trị trả về: số khác 0 nếu thành công, 0 nếu có lỗi.


Ø ExtractIcon

Ý nghĩa: Lấy một Icon trong các File.ICO,.EXE,.DLL

Khai báo:


Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst
As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long


Tham số


Ý nghĩa


Hlnst


Con số chỉ định


LpszExeFileName


Tên của File chứa Icon


NiconIndex


Chỉ số của Icon trong các File.ICO,.EXE,.DLL


Ø GetDiskFreeSpace

Ý nghĩa: lấy thông tin về sự tổ chức của đĩa và không gian còn trống.

Khai báo:


Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias
"GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As
Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long,
lpTotalNumberOfClusters As Long) As Long


Tham số


Mô tả


LpRootPathName


Đường dẫn gốc của ổ đĩa mà không phải là tên của ổ đĩa.


LpSectorsPerCluster


Một biến chứa số Sector trong một Cluster.


LpBytesPerSector


Một biến chứa số Byte trong một Sector.


LpNumberOfFreeCluster


Một bién chứa số Cluster trống trên đĩa.


LpTotalNumberOfCluster


Một biến chứa số Cluster trên đĩa.

Giá trị trả về: Số khác 0 nếu thành công, 0 nếu có lỗi. Hàm này không nên sử
dụng trên Win ’95 cho ổ đĩa lớn

hơn 2 GB


Ø GetFileAttributes

Ý nghĩa: xác định thuộc tính của một File cụ thể.

Khai báo:


Private Declare Function GetFileAttributes Lib "kernel32" Alias
"GetFileAttributesA" (ByVal lpFileName As String) As Long


Tham số


Mô tả


LpFileName


Tên của File cần lấy thuộc tính

Hằng số:

FILE_ATTRIBUTE_ARCHIVE = &H20

FILE_ATTRIBUTE_COMPRESSED = &H800

FILE_ATTRIBUTE_DIRECTORY = &H10

FILE_ATTRIBUTE_HIDDEN = &H2

FILE_ATTRIBUTE_NORMAL = &H80

FILE_ATTRIBUTE_READONLY = &H1

FILE_ATTRIBUTE_SYSTEM = &H4

FILE_ATTRIBUTE_TEMPORARY = &H100

Giá trị trả về: -1 nếu có lỗi. Một giá trị chứa bit cờ cụ thể thuộc tính của
File với bit cờ là một hằng số.


Ø GetFileSize

Ý nghĩa: Xác định kích cỡ của File.

Khai báo:


Private Declare Function GetFileSize Lib "kernel32" Alias "GetFileSize" (ByVal
hFile As Long, lpFileSizeHigh As Long) As Long


Tham số


Mô tả


HFile


Handle của File


LpFileSizeHigh


Giá trị số được nạp với 32 bit cao của 64 bit kích cỡ File. Có thể Null
(thay đổi bởi Byval), nếu kích cỡ thì không tối thiểu bằng 2^32 Byte.


Giá trị trả về: Kích cỡ của File. &HFFFFFFFF nếu có lỗi. Nếu lpFileSizeHigh
không phải là Null và kết quả là

&HFFFFFFFF thì phải gọi GetLastError để xác định, nếu một lỗi thực sự xảy ra thì
giá trị này là kết quả hợp lệ.


Ø GetFileTime

Ý nghĩa: Lấy thông tin thời gian của File đã được chỉ định.

Khai báo:


Private Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal
hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME,
lpLastWriteTime As FILETIME) As Long


Tham số


Mô tả


Hfile


Một Handle của File


LpCreateTime


Một cấu trúc dữ liệu chứa thới gian tạo lập của File


LpLastAccessTime


Một cấu trúc dữ liệu chứa thời gian truy cập lần cuối của File (không
được hổ trợ bởi hệ thống File FAT)


LpLastWriteTime


Một cấu trúc dữ liệu chứa thời gian cập nhật lần cuối của File

Giá trị trả về: số khác 0 nếu thành công, 0 nếu có lỗi.


Ø GetLogicalDriveString

Ý nghĩa: Lấy một chuỗi chứa đường dẫn ổ đĩa gốc của tất cả ổ đĩa luận lí tồn tại
trên hệ thống.

Khai báo:


Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias
"GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As
String) As Long


Tham số


Mô tả


nBufferLengh


Chiều dài của chuỗi lpBuffer


lpBuffer


Một chuỗi chứa tên các đĩa Logic. Mỗi tên được ngăn cách bởi kí tự Null,
tên cuối cùng theo sau bởi 2 kí tự Null.

Giá trị trả về: số kí tự được nạp vào lpBuffer (ngoại trừ kí tự Null kết thúc ).
Nếu Buffer không đủ dài để chứa

đường dẫn, giá trị trả về sẽ là kích cở của Buffer cần thiết. 0 nếu có lỗi.

No comments:

Post a Comment