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
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
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
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
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
Ø 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
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
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
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
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
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. 2.2 Hàm truy xuất Registry a) Giới thiệu Registry lưu trữ các dữ liệu liên quan đến hệ thống và các ứng dụng. Registry bao gồm một số tập tin mà hệ thống và các ứng dụng có thể truy cập đến và sử dụng để hiệu chỉnh thông tin cấu hình. Có ba loại tập tin mà lưu trữ tất cả các thông tin Registry là: System.dat, User.dat và các tập tin Policy. Trong Win’95 Folder và mỗi một File được tạo ra bởi một chương trình khác nhau thì sẽ có các Icon khác nhau được lưu trữ trong các File liên kết hoãc các File chương trình. Các chương trình khi được cài đặt trên máy tính sẽ phải đăng kí Registry và đồng thời Registry lưu trữ các thông tin này để các ứng dụng khác có thể sử dụng để tham khảo khi cần thiết. Chúng ta có thể sử dụng chương trình Regedit của Win ’95 để xem và hiệu chỉnh Registry. Thông tin trong Registry cũng được lưu trữ có cấp bậc và có các Key nắm giữ các thông tin khác nhau. Hình 3-1 minh họa cách lưu trữ trong Registry thông qua chương trình Regedit. · Các loại thông tin lưu trữ trong Registry. Registry có ba loại dữ liệu của các đối tượng là Key, Value, và Data. KEY: Một Key có thể chứa các Key và các Value. VALUE: Registry có thể có ba loại dữ liệu: chuỗi, thông tin nhị phân và giá trị DWORD. Giá trị mặc định thường là chuỗi, mặc dù nó xuất hiện như "(value not set)" cho đến khi nó chứa dữ liệu. Nếu dữ liệu bị loại bỏ thì nó chứa chuỗi rỗng "" thay vì "(value not set)". DATA: Dữ liệu Registry thì thường đuợc chứa trong một value. Một mẫu dữ liệu thì thường không lớn hơn 64KB. · Cách truy xuất Registry để lấy thông tin của các Icon chương trình. Như chúng ta đã biết một File được lưu trữ sẽ có hai phần: phần tên và phần mở rộng, phần mở rộng này dùng để xác định kiểu của File. Trong Registry muốn biết được Icon tương ứng của một File chúng ta có thể lấy được thông tin về chương trình tạo ra File đó và từ đó có thể truy xuất đến key tương ứng để lấy được thông tin về icon mặc định ( đường dẫn chỉ vị trí File chứa Icon chương trình đó trên đĩa ) của chương trình. b) Một số hàm API liên quan đến việc truy xuất Registry Ø RegCloseKey Ý nghĩa: Đóng một Registry key mà trước đó đã được mở bởi hàm API. Bạn phải đóng Registry key khi chấm dứt làm việc với nó. Khai báo: Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
Giá trị trả về: trả về con số kiểu Long, 0 ( ERROR_SUCCESS) thì thành công. Tất cả các giá trị khác thì có lỗi trong mã. Ø RegConnectRegistry Ý nghĩa: Cho phép bạn truy cập vào một phần của Registry trên máy mạng Khai báo: Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
Giá trị trả về: trả về con số kiểu Long, 0 ( ERROR_SUCCESS) thì thành công. Tất cả các giá trị khác thì có lỗi trong mã. Ø RegCreateKey Ý nghĩa: Cho phép bạn tạo một từ khóa mới trong Registry. Nếu từ khóa với cùng các thuộc tính có sẵn đã được mở. Khai báo: Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Giá trị trả về: Kiểu Long. 0 ( ERROR_SUCCESS) thì thành công. Tất cả các giá trị khác thì có lỗi trong mã. Ø RegCreateKeyEx Ý nghĩa: Hàm này cho phép bạn thêm vào thông tin bảo mật mà có thể được đặt trên thực thể Registry. Khai báo: Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
Giá trị trả về: Kiểu Long. 0 ( ERROR_SUCCESS ) thì thành công. Tất cả các giá trị khác thì có lỗi trong mã. Kiểu dữ liệu: Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Ø RegDeleteKey Ý nghĩa: Xóa một Registry key và giá trị kết hợp của nó Khai báo: Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Giá trị trả về: Kiểu Long. 0 ( ERROR_SUCCESS ) thì thành công. Tất cả các giá trị khác thì có lỗi trong mã. Ø RegDeleteValue Ý nghĩa: Xóa giá trị của một Registry key Khai báo: Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Giá trị trả về: Kiểu Long. 0 ( ERROR_SUCCESS ) thì thành công. Tất cả các giá trị khác thì có lỗi trong mã. Ø RegEnumKey / RegEnumKeyEx Ý nghĩa: Cho phép bạn truy xuất mỗi tên từng bước một của một subkey được định vị dưới một từ khóa cụ thể. Khai báo: Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
Giá trị trả về: Kiểu Long. 0 ( ERROR_SUCCESS ) thì thành công. Tất cả các giá trị khác thì có lỗi trong mã. Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Ø RegEnumValue Ý nghĩa: Cho phép bạn truy xuất mỗi tên từng bước một của một subkey được định vị dưới một từ khóa cụ thể. Khai báo: Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
Giá trị trả về: Kiểu Long. 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì lỗi. Ø RegFlushKey Ý nghĩa: Ghi thông tin vào Registry ngay lập tức. Khai báo: Declare Function RegFlushKey Lib "advapi32.dll" Alias "RegFlushKey" (ByVal hKey As Long) As Long
Giá trị trả về: Kiểu Long. 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì bị lỗi. Ø RegLoadKey Ý nghĩa: Nạp thông tin Registry từ một tập tin đã được tạo trước đó bởi RegSaveKey. Khai báo: Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long
Giá trị trả về: Kiểu Long. 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì bị lỗi. Ø RegNotifyChangeKeyValue Ý nghĩa: Cho phép ứng dụng của bạn quan sát việc đăng ký từ khóa và nhận được thông báo khi từ khóa bị thay đổi. Khai báo: Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" Alias "RegNotifyChangeKeyValue" (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long
Giá trị trả về: Kiểu Long. 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì bị lỗi. Ø RegOpenKey/ RegOpenKeyEx Ý nghĩa: Mở một từ khóa được chỉ định. RegOpenKeyEx cũng mở một từ khóa nhưng thêm vào các tham số bảo mật. Khai báo: Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Giá trị trả về: Kiểu Long. 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì bị lỗi. Ø RegQueryInfoKey Ý nghĩa: Cho phép ứng dụng của bạn lấy được thông tin về từ khóa. Khai báo: Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
Giá trị trả về: Kiểu Long. Bằng 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì bị lỗi. Hàm trả về ERROR_MORE_DATA nếu như một trong các buffer không có đủ chi62u dài để chứa dữ liệu trả về. Ø RegQueryValue/ RegQueryValueEx Ý nghĩa: Lấy giá trị mặc định cho từ khóa. RegQueryValueEx lấy thông tin bảo mật của từ khóa. Khai báo: Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Giá trị trả về: Kiểu Long. 0 (ERROR_SUCCESS ) thì thành công, các giá trị khác thì bị lỗi. Ø RegReplaceKey Ý nghĩa: Thay đổi thông tin Registry của một File và tạo File Backup của thông tin đã thay đổi. Khai báo: Declare Function RegReplaceKey Lib "advapi32.dll" Alias "RegReplaceKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
Giá trị trả về: Kiểu Long. 0 ( ERROR_SUCCESS ) thì thành công, các giá trị khác thì bị lỗi. Ø RegRestoreKey Ý nghĩa: Khôi phục thông tin từ một tập tin mà đã được tạo bởi hàm RegReplaceKey. Khai báo: Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long
Giá trị trả về: Kiểu Long. 0 ( ERROR_SUCCESS ) thì thành công, các giá trị khác thì bị lỗi. Ø RegSaveKey Ý nghĩa: Lưu một Registry key cũng như tất cả các subkey của nó lên một File trên đĩa. Tập tin này có thể được sử dụng sau đó bởi hàm RegLoadKey. Khai báo: Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Giá trị trả về: Kiểu Long. bằng 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì bị lỗi. Ø RegSetValue/ RegSetValueEx Ý nghĩa: Thay đổi giá trị của một từ khóa cụ thể. Khai báo: Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Giá trị trả về: Kiểu Long. bằng 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì bị lỗi. Ø RegUnloadKey Ý nghĩa: Đóng và loại bỏ khỏi bộ nhớ một từ khóa đã được mở trước đó bởi hàm RegLoadKey. Khai báo: Declare Function RegUnLoadKey Lib "advapi32.dll" Alias "RegUnLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Giá trị trả về: Kiểu Long. bằng 0 (ERROR_SUCCESS ) thì thành công. Các giá trị khác thì bị lỗi.
|