Trước khi tìm hiểu tiếp phần tiếp theo của API, tôi xin phép được gửi tới các bạn công dụng của các hàm API thông dụng, sau đó chúng ta sẽ tiếp tục nghiên cứu cách sử dụng nó.
Phần 1: Các hàm API liên quan đến cửa sổ
Để xem xét quan hệ của một cửa sổ (Tạm gọi là cửa sổ khai báo) với các cửa sổ khác ta nghiên cứu các mối quan hệ sau:
1. Declare Function AnyPopup Lib "user32" Alias "AnyPopup" () As Long
Công dụng: Đưa ra chỉ số cửa sổ popup hiện đang tồn tại trên màn hình.
Trị trả về: Integer ~ True (Khác zero) nếu có cửa sổ popup.
2. Declare Function AdjustWindowRect Lib "user32" Alias "AdjustWindowRect" (lpRect As RECT, ByVal dwStyle As Long, ByVal bMenu As Long) As Long
3. Declare Function AdjustWindowRectEx Lib "user32" Alias "AdjustWindowRectEx" (lpRect As RECT, ByVal dsStyle As Long, ByVal bMenu As Long, ByVal dwEsStyle As Long) As Long
Công dụng: Điều chỉnh cửa sổ khi có vùng làm việc client (Không tính kích thước của thanh tiêu đề, đường viền và các phần thêm) được khai báo, khi biết kiểu cửa sổ.
Tham số kèm:
LpRect Hình chữ nhật chứa vùng làm việc client.
Các hàm API liên quan đến cửa sổ Trước khi tìm hiểu tiếp phần tiếp theo của API, tôi xin phép được gửi tới các bạn công dụng của các hàm API thông dụng, sau đó chúng ta sẽ tiếp tục nghiên cứu cách sử dụng nó. Phần 1: Các hàm API liên quan đến cửa sổ Để xem xét quan hệ của một cửa sổ (Tạm gọi là cửa sổ khai báo) với các cửa sổ khác ta nghiên cứu các mối quan hệ sau: 1. Declare Function AnyPopup Lib "user32" Alias "AnyPopup" () As Long Công dụng: Đưa ra chỉ số cửa sổ popup hiện đang tồn tại trên màn hình. Trị trả về: Integer ~ True (Khác zero) nếu có cửa sổ popup. 2. Declare Function AdjustWindowRect Lib "user32" Alias "AdjustWindowRect" (lpRect As RECT, ByVal dwStyle As Long, ByVal bMenu As Long) As Long 3. Declare Function AdjustWindowRectEx Lib "user32" Alias "AdjustWindowRectEx" (lpRect As RECT, ByVal dsStyle As Long, ByVal bMenu As Long, ByVal dwEsStyle As Long) As Long Công dụng: Điều chỉnh cửa sổ khi có vùng làm việc client (Không tính kích thước của thanh tiêu đề, đường viền và các phần thêm) được khai báo, khi biết kiểu cửa sổ. Tham số kèm: LpRect Hình chữ nhật chứa vùng làm việc client. DwStyle Kiểu cửa sổ. BMenu Đưa giá trị True (Khác zero) nếu cửa sổ có trình đơn DwEsStyle kiểu cửa sổ mở rộng. 4. Declare Function ArrangeIconicWindows Lib "user32" Alias "ArrangeIconicWindows" (ByVal hwnd As Long) As Long Công dụng: Xếp các biểu tượng cửa sổ trong một cửa sổ chứa (Mức Parent). Trị trả về: Integer chiều cao của hàng biểu tượng. Zero nếu thất bại. Tham số kèm: HWnd Cán của cửa sổ chứa (Mức Parent). 5. Declare Function BeginDeferWindowPos Lib "user32" Alias "BeginDeferWindowPos" (ByVal nNumWindows As Long) As Long Công dụng: Bắt đầu xây dựng danh sách vị trí các cửa sổ mới thành cấu trúc bản đồ nội bộ chứa vị trí các cửa sổ. Trị trả về: Integer - cán của cấu trúc bản đồ. Zero nếu thất bại. Tham số kèm: NNum Windows Số cửa sổ ban đầu để cấp phát chỗ trống. 6. Declare Function DeferWindowPos Lib "user32" Alias "DeferWindowPos" (ByVal hWinPosInfo As Long, ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Công dụng: Đinh nghĩa vị trí của cửa sổ mới qua cửa sổ khai báo và đưa vào cấu trúc bản đồ nội bộ chứa vị trí các cửa sổ. Trị trả về: Integer - Cán mới đối với cấu trúc bản đồ chứa thông tin cập nhật vị trí. Zero nếu thất bại. Tham số kèm: HWinPosInfo Cán của cấu trúc bản đồ. HWnd Cửa sổ cần định vị. HWndInsertAfter Cán cửa sổ mà cửa sổ hWnd đặt sau nó trong danh sách. Nó có thể là một trong các hằng sau: HWnd_BOTTOM: Đặt về cuối danh sách. HWnd_TOP: Đặt cửa sổ ở đầu danh sách HWnd_TPMOST: Đặt cửa sổ ở đầu danh sách lên trên cùng nhìn thấy được. X Hoành độ của cửa sổ hWnd theo toạ độ của cửa sổ chứa (Mức Parent) nó. Y Tung độ của cửa sổ hWnd theo toạ độ cửa sổ chứa (Mức Parent) nó. cx Chiều rộng cửa sổ mới. cy Chiều cao cửa sổ mới. Flags Một số nguyên là một trong các hằng sau: SWP_DRAWFRAME: Vẽ khung bao quanh cửa sổ. SWp-HIDEWINDOW: Giấu cửa sổ. SWP_NOACTIVE: Không kích hoạt cửa sổ. SWP_NOMOVE: Giữ nguyên vị trí hiện tại. SWP_NOREDRAW: Không vẽ lại tự động. SWp_NOSIZE: Giữ nguyên kích thước. SWp_NOZORDER: Giữ nguyên vị trí hiện hành trong danh sách. 7. Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Công dụng: Thiết đặt vị trí và trạng thái cửa sổ. Tham số kèm: HWnd Cán của cửa sổ cần định vị HWndInsertAfter Như hàm trên. 8. Declare Function EndDeferWindowPos Lib "user32" Alias "EndDeferWindowPos" (ByVal hWinPosInfo As Long) As Long Công dụng: Cập nhật các vị trí và tình trạng của tất cả các cửa sổ. Tham số kèm: HWinPosInfo Cán của cấu trúc bản đồ lấy từ lệnh DerefWindowPos gần nhất. 9. Declare Function BringWindowToTop Lib "user32" Alias "BringWindowToTop" (ByVal hwnd As Long) As Long Công dụng: Chuyển cửa sổ lên đầu danh sách làm lộ ra nếu bị khuất. Tham số kèm: HWnd Cán của cửa sổ cần tác động. 10. Declare Function ChildWindowFromPoint Lib "user32" Alias "ChildWindowFromPoint" (ByVal hWnd As Long, ByVal xPoint As Long, ByVal yPoint As Long) As Long 11. Declare Function ChildWindowFromPoint Lib "user32" Alias "ChildWindowFromPoint" (ByVal hWndParent As Long, ByVal pt As POINTAPI) As Long Công dụng: Lấy cán của cửa sổ con (Mức Child) khi đưa điểm của cửa sổ chứa (Mức Parent) nó. Trị trả về: Integer - Cán của cửa sổ con (Mức Child) đầu tiên thoả mãn. Nếu không thấy cửa sổ con (Mức Child) nào trả về cán của cửa sổ chứa (Mức Parent). Zero nếu điểm nằm ngoài cửa sổ chứa (Mức Parent). Tham số kèm: HWnd Cán của cửa sổ chứa (Mức Parent). Pt Trị của điểm. XPoint Hoành độ của điểm. YPoint Tung độ của điểm. 12. Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long Công dụng: Chuyển toạ độ theo cửa sổ sang toạ độ theo màn hình. Tham số kèm: HWnd Cán của cửa sổ làm căn cứ xác định toạ độ. LpPoint Ddieemr tính theo toạ độ cửa sổ 1. Declare Function CloseWindow Lib "user32" Alias "CloseWindow" (ByVal hwnd As Long) As Long Công dụng: Thu nhỏ cửa sổ. Tham số kèm: HWnd Cán của cửa sổ cần thu. 2. Declare Function CopyRect Lib "user32" Alias "CopyRect" (lpDestRect As RECT, lpSourceRect As RECT) As Long Công dụng: Sao nội dung hình chữ nhật. Tham số kèm: lpDestRect Hình chữ nhật đích sẽ nhận kết quả. LpSourceRect Hình chữ nhật nguồn bị copy. 3. Declare Function DestroyWindow Lib "user32" Alias "DestroyWindow" (ByVal hwnd As Long) As Long Công dụng: Phá huỷ cửa sổ (Kể cả các cửa sổ con (Mức Child) của nó). Trị trả về: Integer khác 0 sẽ thành công. Zero nếu thất bại. Tham số kèm: HWnd Cán của cửa sổ sẽ phá huỷ. 4. Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long Công dụng: Cho hiệu lực hay vô hiệu hoá mọi dữ liệu nhập vào cửa sổ từ bàn phím hoặc chuột. Trị trả về: Integer True (Khác zero) nếu trước đó cửa sổ được phép. Zero nếu bị vô hiệu hoá. Tham số kèm: HWnd Cán của cửa sổ FEnable Giá trị logic. Nếu là True, thì Window sẽ có hiệu lực Enable. Còn False, sẽ không có hiệu lực Disable. Declare Function EnumChildWindows Lib "user32" Alias "EnumChildWindows" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Công dụng: Liệt kê các cửa sổ con (Mức Child) của một cửa sổ chứa (Mức Parent). Phải có Custom Control CBK.VBX mới sử dụng được. Trị trả về: Integer True (Khác zero) nếu thành công. Zero nếu thất bại. Tham số kèm: HWndParent Cán của cửa sổ chứa (Mức Parent) cần liệt kê LpEnumFunc Biến trỏ chỉ đến hàm để gọi đối với mỗi cửa sổ con (Mức Child). Sử dụng tính chất ProcAddress của Custon Control CBK.VBX để nhận hàm biến trỏ (function pointer) để gọi lại (callbacks). LParam Trị chuyển đến cho sự kiện EnumWindows của Custom Control trong lúc liệt kê. Ý nghĩa của trị này do lập trình viên xác định. 5. Declare Function EnumWindowStations Lib "user32" Alias "EnumWindowStationsA" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Công dụng: Liệt kê danh sách cửa sổ cấp trên, chứa cửa sổ khai báo. Phải có Custom Control CBK.VBX mới sử dụng được. Trị trả về: Integer True (Khác zero) nếu thành công. Tham số kèm: LpEnumFunc Biến trỏ chỉ đến hàm để gọi đối với mỗi cửa sổ con (Mức Child). Sử dụng tính chất ProcAddress của Custon Control CBK.VBX để nhận hàm biến trỏ (function pointer) để gọi lại (callbacks) LParam Trị chuyển đến cho sự kiện EnumWindows của Custom Control trong lúc liệt kê. Ý nghĩa của trị này do lập trình viên xác định. 6. Declare Function EqualRect Lib "user32" Alias "EqualRect" (lpRect1 As RECT, lpRect2 As RECT) As Long Công dụng: So sánh 2 cấu trúc hình chữ nhật. Trị trả về: Integer True (Khác zero) Nếu các toạ độ góc trái trên và góc phải dưới của 2 hình bằng nhau. Zero nếu khác. Tham số kèm: LpRec1, lpRec2: Hai hình chữ nhật cần so sánh. 7. Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Công dụng: Tìm cửa sổ đầu tiên trong danh sách cửa sổ thoả mãn điều kiện. Trị trả về: Integer - Cán của cửa sổ thoả mãn. Zero nếu không có cửa sổ nào. Tham số kèm: LpClassName Biến trỏ chỉ đến chuỗi kết thúc bằng null chứa tên lớp đối tượng đối với cửa sổ. Nếu bằng zero chấp nhận bất cứ lớp nào. LpWindowName Biến trỏ chỉ đến chuỗi kết thúc bằng null chứa tên tiêu đề cửa sổ. Nếu bằng 0, chấp nhận bất cứ tiêu đề nào. 8. Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Công dụng: Tìm cửa sổ đầu tiên trong danh sách cửa sổ thoả mãn điều kiện. Trị trả về: Integer - Cán của cửa sổ thoả mãn. Zero nếu không có cửa sổ nào. Tham số kèm: hwndParent Cán cuả cửa sổ chứa (Cấp Parent) có các cửa sổ con để tìm. Nếu hwndParent là NULL, hàm sẽ sử dụng desktop như cửa sổ chứa parent. Hàm sẽ tìm trong số các cửa sổ là cửa sổ con (Cấp Child) của desktop. Windows 2000 trở lên: Nếu hwndParent là HWND_MESSAGE, hàm sẽ tìm tất cả cửa sổ dạng message-only windows. hwndChildAfter Là cán của cửa sổ con (cấp child). Tìm kiếm bắt đầu từ cửa sổ con kế tiếp theo thứ tự trục Z. Cửa sổ con phải là một cấp kế tiếp của hwndParent, không thể cấp thấp hơn. Nếu hwndChildAfter là NULL, tìm kiếm sẽ bắt đầu với cửa sổ con đầu tiên(Cấp child) của hwndParent. Nhớ rằng nếu cả hai hwndParent và hwndChildAfter là NULL, hàm sẽ tìm tất cả mức top của dạng message-only windows. lpszClass Lớp cần tìm kiếm. lpszWindow Tiêu đề của cửa sổ cần tìm. Nếu là NULL, Tìm tất cả. 9. Declare Function FlashWindow Lib "user32" Alias "FlashWindow" (ByVal hwnd As Long, ByVal bInvert As Long) As Long Công dụng: Chiếu sáng cử sổ, ngay cả khi nó chưa được kích hoạt (inactive) Trị trả về: Integer True (Khác zero) nếu cửa sổ đã được kích hoạt trước khi gọi. Tham số kèm: HWnd Cán của cửa sổ cần chiếu sáng. BInvert Integer - True (Khác zero) nếu bật, False để quay lại trạng thái trước 10. Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As Long Công dụng: Nhận cán của cửa sổ đang kích hoạt. Trị trả về: Integer - Cán của cửa sổ đang kích hoạt. Zero nếu không có. 11. Declare Function GetClassInfo Lib "user32" Alias "GetClassInfoA" (ByVal hInstance As Long, ByVal lpClassName As String, lpWndClass As WNDCLASS) As Long Công dụng: Nhận bản sao cấu trúc Wndclass chứa thông tin về lớp khai báo. Trị trả về: Integer - True (Khác zero) khi thành công. Zero nếu không thấy lớp thoả mã ... VKey Mã của phím cần kiểm tra (Xem bảng mã key code các phím) 18. Declare Function GetKBCodePage Lib "user32" Alias "GetKBCodePage" () As Long Công dụng: Nhận trang mã Windows cần chuyển đổi giữa các bộ ký tự. Trị trả về: Integer - Là các trị số chỉ trang mã. 19. Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long Công dụng: Nhận trạng thái phím ảo của bàn phím. Trị trả về: Đọc trạng thái ghi vào biến cần lưu. Tham số kèm: PbKeyState - Biến dạng byte (Là chuỗi có chiều dài có thể lưu trữ 256 ký tự) nhằm lưu giá trị để nhận tình trạng các phím. Giá trị này phải được hiểu là nhị phân, căn cứ vào bit 0 của các đoạn tương ứng với các phím Caplock, NumLock, Scroll Lock, nếu là 1 sẽ là đang bật, còn bit 7 các phím thường, nếu nhấn xuống là 1, giá trị 0 là thả ra. 20. Declare Function GetKeyboardType Lib "user32" Alias "GetKeyboardType" (ByVal nTypeFlag As Long) As Long Công dụng: Nhận kiểu bàn phím đang dùng. Trị trả về: Integer - Zero nếu có lỗi. Các số khác chỉ loại bàn phím đăng ký. Nếu cờ bằng 0, trị trả về: 1 - Tương ứng bàn phím 83 phím 2 - Tương ứng 102 phím 3 - Tương ứng 84 phím 4 - Tương ứng 101 -102 phím (IBM) 5 - Tương ứng Nokia 1050 6 - Tương ứng Nokia 9140 7 - Tương ứng tiếng Nhật. Nếu cờ bằng 1, trị trả về tuỳ thuộc hãng sản xuất. Nếu cờ bằng 2, trị trả về: 1, 3, 5 - Tương ứng bàn phím 10 phím chức năng. 2 - Tương ứng bàn phím 12 hoặc 18 phím chức năng. 4 - Tương ứng bàn phím 12 phím chức năng. 6 - Tương ứng bàn phím 24 phím chức năng. 7 - Do hãng sản xuất quy định. Tham số kèm: NTypeFlag - Cờ xác định kiểu dữ liệu cần lấy. 21. Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long Công dụng: Nhận tên của phím. Trị trả về: Chiều dài của tên phím nhận được trong lpBuffer Tham số kèm: LParam Là một số mà bit từ 0 - 5 đặt là 0. Bít 16 - 23 đặt mã quét của phím cần xác định tên, bít 24 - Bít mở rộng trên những bàn phím nâng cao. Bit 25 - Khi gán bằng 1, bỏ qua sự khác biệt giữa các phím trái, phải. LpBuffer Chuỗi được gán trước để nhận tên phím. Nên có nSize + 1 bytes. NSize Chiều dài tối đa của chuỗi. 22. Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer Công dụng: Nhận trạng thái phím ảo. Trị trả về: Bit 0 là 1 khi các phím như Caplock, NumLock, ScrollLock là bật, nếu bit 0 là 0, các phím này tắt. Bit 15 là 1, nếu phím đang bị nhấn, bit 15 là 0 nếu vừa nhả. Tham số kèm: NVirtKey - Mã phím ảo để kiểm tra 23. Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long Công dụng: Thực hiện những sự chuyển đổi mã quét và ký tự tuỳ thuộc vào kiểu ánh xạ cung cấp. Trị trả về: Tuỳ thuộc vào kiểu ánh xạ yêu cầu, trị trả về theo bảng sau WCode là Giá trị của VMapType 0 1 2 Mã phím ảo Mã quét tương ứng Mã quét Mã phím ảo tương ứng Mã phím ảo Trị ASCII tương ứng. Tham số kèm: WCode - Giá trị nguồn cần chuyển đổi. WMapType - Điều khiển kiểu chuyển đổi. 24. Declare Function MapVirtualKeyEx Lib "user32" Alias "MapVirtualKeyExA" (ByVal uCode As Long, ByVal uMapType As Long, ByVal dwhkl As Long) As Long Công dụng Hàm dịch mã phím ảo thành một mã quét hoặc giá trị ký tự, hoặc dịch một mã quét thành mã phím ảo. Chức năng dịch các mã dùng cho ngôn ngữ nhập và định dạng vị trí. Tham số kèm: Parameters uCode Mã phím ảo hoặc mã quét của một phím. Giá trị này phải tương ứng với uMapType. uMapType [in] Kiểu dữ liệu cần dịch. Giá trị này phải phù hợp với tham số uCode trên. Các giá trị 0, 1, 2 như bảng trên. Riêng giá trị bằng 3 chỉ sử dụng cho Windows NT/2000 trở lên: uCode là một mã quét và được dịch thành mã phím ảo để phân biệt giữa những phím bên tay trái và những phím bên tay phải. Nếu điều này không dịch, hàm trả về 0 dwhkl [in] Định vị vị trí nhập để sử dụng cho việc dịch các mã đặc biệt. Tham số này có thể là bất kỳ giá trị định vị vị trí trước đó mà đã nhận được từ hàm LoadKeyboardLayout Trị trả về Hoặc là một ã quét, môt mã phím ảo hoặc một giá trị ký tự tuỳ thuộc vào uCode và uMapType. Nếu điều này không được dịch, hàm trả về zero. Một ứng dụng có thể dùng MapVirtualKeyEx để dịch các mã quét thành các hằng mã phím ảo như VK_SHIFT, VK_CONTROL, và VK_MENU, và ngược lại. Quá trình dịch không do not phân biệt giữa các phím trá hay phải của các phím SHIFT, CTRL, hoặc ALT. Còn Windows NT/2000 trở lên thì phân biệt, nó sẽ chuyển được thành các hằng mã phím ảo như: VK_LSHIFT VK_RSHIFT VK_LCONTROL VK_RCONTROL VK_LMENU VK_RMENU Sự phân biệt này ảnh hưởng tới các hàm GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, MapVirtualKey, và chính MapVirtualKeyEx . Xin xem bảng mã phím ảo Virtual-Key Codes. 25. Declare Function OemKeyScan Lib "user32" Alias "OemKeyScan" (ByVal wOemChar As Long) As Long Công dụng: Nhận mã quét và trạng thái Shift đối với một ký tự ASCII trong bộ ký tự OEM. Trị trả về: Từ thấp chứa mã quét. Từ cao đưa ra các cờ hiệu thông qua các bit. Bit 0 nếu bằng 1, phím Shift bị nhấn. Bit 1 là 1 cho biết Ctrl bị nhấn. Tham số kèm: WOemChar - Giá trị ASCII của ký tự cần chuyển đổi. 26. Declare Function SetKeyboardState Lib "user32" Alias "SetKeyboardState" (lppbKeyState As Byte) As Long Công dụng: Đặt trạng thái phím ảo. Thường sử dụng để đặt trạng thái phím CaspLock, NumLock, ScrollLock. Tham số kèm: lppbKeyState - Biến con trỏ 256 byte chứa trạng thái bàn phím. 27. Declare Function ToAscii Lib "user32" Alias "ToAscii" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpbKeyState As Byte, lpwTransKey As Long, ByVal fuState As Long) As Long Công dụng: Xác định trị ASCII của một phím ảo dựa trên các trạng thái phím Shift và phím điều khiển. Trị trả về: Nếu phím cần kiểm tra là phím chết, giá trị trả về là số âm. Trường hợp khác là một trong các giá trị sau: 0 - Phím ảo cần kiểm tra không được dịch trong trạng thái hiện hành của bàn phím. 1 - Một ký tự được copy vào buffer 2 - Hai ký tự được copy vào bufer, trường hợp này xảy ra khi một phím nhấn chết, và gõ một phím khác. Tham số kèm: UVirtKey - Phím ảo cần chuyển đổi. UScanCode - Mã quét của phím hoặc phím cần chuyển đổi. Bit cao của giá trị được thiết lập nếu phím nhả. LpbKeyState - Biến trỏ tới mảng 256 byte chỉ trạng thái bàn phím hiện tại. Mỗi byte trong mảng chứa trạng thái của một phím. Nếu bit cao của một byte được thiết lập là phím được nhấn xuống. Với bit thấp được thiết lập, tín hiệu được đảo là ON. Trường hợp này chỉ dùng cho CAPSLOCK. Còn SCROLLOCK và NUMLOCK bị bỏ qua. LpwTransKey - Biến con trỏ chỉ tới buffer mà nhận giá trị kết quả sau khi dịch. FuState - Cờ hiệu, trạng thái thực đơn được kích hoạt. Nếu là 1 là được kích hoạt, ngược lại 0. 28. Declare Function ToAsciiEx Lib "user32" Alias "ToAsciiEx" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpKeyState As Byte, lpChar As Integer, ByVal uFlags As Long, ByVal dwhkl As Long) As Long Như trên riêng dwhkl dùng để định vị trí nhập, dùng cho chuyển mã.Tham số này nhận được bất cứ vị trí định vị nào trước đó đã được trả về từ hàm LoadKeyboardLayout 29. Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" (ByVal cChar As Byte) As Integer Công dụng: Dịch ký tự phím ảo tùy thuộc trạng thái phím shift hiện tại. Trị trả về: Nếu hàm thành công, byte thấp của giá trị trả về chứa mã phím ảo, và byte cao chứa trạng thái Shift, căn cứ vào bảng sau Bit Nghĩa là 1 Bất cứ SHIFT key bị nhấn 2 Bất cứ CTRL key bị nhấn. 4 Bất cứ ALT key bị nhấn. 8 The Hankaku key bị nhấn 16 Dành riêng (Được định nghĩa bởi driver). 32 Dành riêng (Được định nghĩa bởi driver). Nếu hàm không tìm thấy phím nào để dịch thì bỏ qua mã ký tựcả hai byte thấp và cao đều chứa –1. 30. Declare Function VkKeyScanEx Lib "user32" Alias "VkKeyScanExA" (ByVal ch As Byte, ByVal dwhkl As Long) As Integer Như trên riêng dwhkl dùng để định vị trí nhập, dùng cho chuyển mã.Tham số này nhận được bất cứ vị trí định vị nào trước đó đã được trả về từ hàm LoadKeyboardLayout 3. Tiếp theo là các hàm điều khiển nhập liệu: 31. Declare Function GetInputState Lib "user32" Alias "GetInputState" () As Long Công dụng: Nhận trạng thái nhập liệu, kiểm tra xem có tình huống chuột hoặc bàn phím đang chờ xử lý không. Trị trả về: True - Nếu có trường hợp cần xử lý đang chờ. 32. Declare Function GetQueueStatus Lib "user32" Alias "GetQueueStatus" (ByVal fuFlags As Long) As Long Công dụng: Nhận loại chỉ lệnh cần xử lý trong hàng đợi đợi ứng dụng. Trị trả về: Từ cao là tập cờ 16 bit, khai báo các chỉ lệnh ở hàng đợi. Từ thấp cho biết các loại chỉ lệnh được thêm vào. Tham số kèm: FUFlags - Tập cờ yêu cầu cần kiểm tra chỉ lệnh là một từ thông qua các bit. Là một trong các hằng số sau: QS_ALLEVENTS = Tất cả các mức (QS_INPUT hoặc QS_POSTMESSAGE hoặc QS_TIMER hoặc QS_PAINT hoặc QS_HOTKEY) QS_ALLINPUT = Tấ cả phần nhập liệu (QS_SENDMESSAGE hoặc QS_PAINT hoặc QS_TIMER hoặc QS_POSTMESSAGE Hoặc QS_MOUSEBUTTON Hoặc QS_MOUSEMOVE Hoặc QS_HOTKEY Hoặc QS_KEY) QS_HOTKEY - Phím nóng. QS_INPUT - Phần nhập (QS_MOUSE Hoặc QS_KEY) QS_KEY - Các chỉ lệnh phím. QS_MOUSE = Các chỉ lệnh chuột (QS_MOUSEMOVE Hoặc QS_MOUSEBUTTON) QS_MOUSEBUTTON - Chỉ lệnh liên quan đến nút chuột. QS_MOUSEMOVE - Di chuyển bằng chuột QS_PAINT - Chỉ lệnh vẽ. QS_POSTMESSAGE - Chỉ lệnh được phát đi. QS_SENDMESSAGE - Chỉ lệnh được chuyển từ ứng dụng khác. QS_TIMER - Timer. 33. Declare Function GetQueuedCompletionStatus Lib "kernel32" Alias "GetQueuedCompletionStatus" (ByVal CompletionPort As Long, lpNumberOfBytesTransferred As Long, lpCompletionKey As Long, lpOverlapped As Long, ByVal dwMilliseconds As Long) As Long Công dụng: Nhận trạng thái chỉ lệnh đã hoàn thành xếp hàng trong hàng đợi hệ thống Trị trả về: @ Tham số kèm: CompletionPort - Cán cổng hoàn thành. Để tạo một cổng hoàn thành sử dụng hàm CreateIoCompletionPort LpNumberOfBytesTransferred - Biến con trỏ chỉ vào một biến nhận về số byte trao đổi trong tác vụ vào ra đã hoàn thành. LpCompletionKey - Biến con trỏ chỉ vào biến nhận về phím đã hoàn thành tác vụ vào ra. Một phím hoàn thành là một giá trị nhận từ hàm CreateIoCompletionPort LpOverlapped - Biến con trỏ chỉ tới biến ghi lại vị trí của địa chỉ cấu trúc OVERLAPPED được thiết lapaj khi tác vụ hoàn thành được bắt đầu. DwMilliseconds - Số mili giây gọi để chờ cho tác vụ hoàn thành. 34. Declare Function IsDBCSLeadByte Lib "kernel32" Alias "IsDBCSLeadByte" (ByVal bTestChar As Byte) As LongDeclare 35. Function IsDBCSLeadByte Lib "kernel32" Alias "IsDBCSLeadByte" (ByVal TestChar As Byte) As Long Công dụng: Kiểm tra xem có phải là ký tự đầu tiên trong bộ ký tự 2 byte. Trị trả về: True nếu là byte đầu của ký tự thuộc bộ ký tự 2 byte. Tham số kèm: BTestChar - Ký tự cần kiểm tra.
Tài liệu đính kèm: