 |
|
HỒ LÔ BIẾN |
|
Dùng VBA để "chộp"
màn hình
ĐÀM MINH KHÔI |
|
Người dùng Word có kinh nghiệm lập trình thường dựa
vào VBA (Visual Basic for Application) để tạo
ra công cụ mới dưới dạng những vĩ lệnh (macro),
sau đó dùng vĩ lệnh ấy thông qua một nút bấm trên
thanh công cụ hoặc mục chọn trên trình đơn hoặc một
phím tắt (shortcut key). Xin giới thiệu với bạn cách
dùng VBA để tự động "chộp" màn hình (screen
capture), không cần "ra tay" nhấn phím PrintScreen.
Bạn có thể ứng dụng ý tưởng này trong các vĩ lệnh
lớn hơn, khi cần tự động hóa một loạt thao tác
"chộp" màn hình, đưa vào tài liệu nào đấy (rất đắc
dụng khi... viết bài để gửi e-CHÍP). |
|
Sử dụng hàm SendKeys |
|
Khi muốn ra lệnh cho VBA “nhấn phím nào đấy” thay vì
tự tay nhấn phím trên bàn phím, ta dùng hàm
Sendkeys của WordBasic. Ví dụ,
SendKeys “A” tương ứng với việc nhấn phím A
trên bàn phím; SendKeys “{TAB}” tương ứng với
việc nhấn phím TAB trên bàn phím. Để nhấn
phím PrintScreen, ta dùng SendKeys
"{prtsc}" hoặc SendKeys "{1068}". Mã
1068 có hiệu lực với mọi phiên bản ngôn ngữ
(Anh, Đức, Trung Quốc,...) của Word. |
|
Để thử nghiệm, trong Word, bạn hãy chọn Tools >
Macro > Macros... để mở hộp thoại Macros. Trên
hộp thoại này, bạn gõ tên vĩ lệnh cần tạo,
ChomManHinh chẳng hạn, vào ô Macro name,
chọn nút Create để mở cửa sổ soạn thảo
Microsoft Visual Basic và gõ đoạn mã sau: |
|
Sub ChomManHinh()
WordBasic.SendKeys "{1068}"
End Sub |
|
Muốn kiểm tra vĩ lệnh ChomManHinh, xem có
hiệu quả không, bạn cần gán nó cho một phím tắt, ví
dụ Ctrl+Alt+F12. Bạn hãy chọn mục Tools >
Customize... để mở hộp thoại Customize.
Trên hộp thoại này, bạn bấm nút Keyboard...
để mở hộp thoại Customize keyboard. Trong
danh sách Categories, chọn mục Macros
rồi chọn tên ChomManHinh bên danh sách
Macros. Sau đó, bấm vào ô Press new shortcut
key, nhấn tổ hợp phím Ctrl+Alt+F12. Cuối
cùng, bấm nút Assign và các nút Close
để đóng các hộp thoại. Từ lúc này, khi nhấn tổ hợp
phím Ctrl+Alt+F12 trong Word, bạn sẽ chôm
được nội dung màn hình đang thấy. |
|
Sử dụng các hàm API |
|
Thay vì dùng hàm WordBasic.sendKeys, bạn có
thể dùng hàm API keybd_event (đoạn mã 1). Với
hàm này, bạn còn có thể "chộp" hình ảnh cửa sổ hiện
hành, thay cho việc bấm tổ hợp phím Alt +
PrintScreen (đoạn mã 2). |
|
Đoạn
mã 1
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal
_
bVk As Byte, ByVal bScan As Byte, ByVal dwFlags _
As Long, ByVal dwExtraInfo As Long)
Private Const VK_SNAPSHOT = &H2C
Sub ChomManHinh()
keybd_event VK_SNAPSHOT, 1, 0, 0
End Sub |
|
Đoạn
mã 2
Option Explicit
Private Declare Sub keybd_event Lib "user32"
(ByVal _
bVk As Byte, ByVal bScan As Byte, ByVal dwFlags _
As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12
Sub ChomCuaSo()
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End Sub |
|
Cách kiểm
tra hai thủ tục ChomManHinh và ChomCuaSo
cũng được thực hiện tương tự trường hợp sử dụng hàm
SendKeys nêu trên. Ngoài ra, để kiểm tra thủ
tục ChomCuaSo, bạn có thể mở thêm vài tài
liệu khác song song với tài liệu bạn đang soạn thảo
để có nhiều cửa sổ đang mở, rồi chọn Window >
Arrange All để các cửa sổ hiện ra cùng lúc. Bạn
sẽ thấy rõ thủ tục ChomCuaSo chỉ "chộp" cửa
sổ hiện hành mà thôi. |
|
|
|
 |
|
 |