Điều khiển bàn phím bằng VBA

tuhocvba

Administrator
Thành viên BQT
Chúng ta biết rằng, chúng ta có thể điều khiển bàn phím bằng SendKeys, có thời gian diễn đàn sẽ giới thiệu về nó sau.
Hàm SendKeys có thể sử dụng trong VBA để điều khiển lệnh ấn một phím nào đó theo chỉ thị của chúng ta.
Tuy nhiên nó chỉ đúng với hệ điều hành Win XP, các hệ điều hành gần đây thì có vẻ hàm này không còn sử dụng được nữa.
Vì vậy, ở bài viết này tôi giới thiệu các bạn một hàm mạnh hơn.
Nó có tên là keybd_event . Có từ khóa này rồi, thì chính các bạn cũng có thể google tìm hiểu, có rất nhiều bài viết về nó. Bản thân các quản trị viên cũng đã tìm kiếm và nhận thấy có một vài topic sau là dễ hiểu, ngắn gọn, tôi để link ở dưới bài viết này.
Mã:
#if win64 then 'khai báo hàm cô 64bit
Public Declare Ptrsafe Sub keybd_event Lib "user32" ( _
  ByVal bVk As Byte, _
  ByVal bScan As Byte, _
  ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long)

'bVk:        Keycode
'bScan:      Scancode、thông thường là 0
'dwFlags:    0:Key được ấn / 1:thêm 0xE0 / 2:Nhả phím
'dwExtraInfo:thường là 0
#Else 'khai báo cho 32bit
Public Declare Sub keybd_event Lib "user32" ( _
  ByVal bVk As Byte, _
  ByVal bScan As Byte, _
  ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long)

'bVk:        Keycode
'bScan:      Scancode、thông thường là 0
'dwFlags:    0:Key được ấn / 1:thêm 0xE0 / 2:Nhả phím
'dwExtraInfo:thường là 0
#End if

Const EXTENDED_KEY = &H1  'phím được ấn > truyền vào tham số dwFlags để điều khiển ấn phím
'có thể không cần khai báo hằng số EXTENDED_KEY
Const KEYUP = &H2          'phím được nhả > truyền vào tham số dwFlags để điều khiển ấn phím
Sau đây là code minh họa ấn phím H. Gồm có hai thao tác: ấn và nhả.
Mã:
Sub an_phim_h()

  keybd_event vbKeyH, 0, 0, 0 'Ấn phím H
  keybd_event vbKeyH, 0, KEYUP, 0 'Nhả phím H

End Sub
Ở đây sẽ có người thắc mắc tại sao phím H lại là vbKeyH. Về danh sách các phím, mọi người có thể google.
Cụ thể tôi tham khảo ở đây:

Sau khi đọc xong bài viết này, ta đã hiểu logic của một số chương trình chụp ảnh màn hình, thực chất là nó điều khiển phím tắt để thực hiện việc chụp ảnh.
Vậy, mọi người hãy thử luyện tập nhé.
Các link tham khảo để thực hiện bài viết này:

Bài viết tiếp theo trong cùng chủ đề này, ta sẽ bàn về việc đọc thao tác của người dùng xem họ đã ấn phím nào. Cho tới lúc đó, tôi không mong có bất cứ bài viết nào chen ngang trong topic này. Cám ơn các bạn.
 
Top