PEMROGRAMAN API [KEYBOARD EVENT]
l Sebuah
fungsi API untuk mensintesis event dari sebuah keyboard
l Fungsinya
bernama keybd_event
l Keyboard
driver menginterupt handle call
l Disimpan
dalam librari user32.dll
l Kompatibel
dengan Windows NT 3.1, serta Windows 95 ke atas
l Mempunyai
dua buah message
l WM_KEYUP
l WM_KEYDOWN
l WM_KEYDOWN
adalah message yang dikirimkan ke handle untuk mensintesis “tekan jari ke
keyboard”
l WM_KEYUP
adalah kebalikan dari WM_KEYDOWN, yaitu “angkat jari dari keyboard”
l Dengan
menggabungkan dua message tadi, maka akan didapatkan sintesis pengetikan
keyboard
DEKLARASI KEYBOARD EVENT
Declare Sub keybd_event Lib "user32.dll"
(
ByVal
bVk As Byte,
ByVal
bScan As Byte,
ByVal
dwFlags As Long,
ByVal
dwExtraInfo As Long
)
PARAMETER keybd_event
l bVk
à menspesifikasikan
nilai dari virtual-key code
l Isinya
harus berkisar diantara 1-254
l bScan
à menspesifikasikan
hardware scan kode dari key
l fdwFlags
à kumpulan flag bits
yang menentukan beberapa aspek dari operasi function.
l KEYEVENTF_EXTENDEDKEY:
bila dipakai, scan code akan diawali oleh byte prefix yang mempunyai nilai 0xE0
(224)
l KEYEVENTF_KEYUP:
bila dipakai, maka tombol dalam keadaan tidak ditekan, dan sebaliknya
l dwExtraInfo
à Melambangkan tambahan
32 bit value yang diasosiasikan dengan key stroke
CONTOH PENGGUNAAN
l Menggunakan
API keybd_event untuk mencetak “hello” di Form
l Deklarasi
konstanta serta API function…
DEKLARASI – DEKLARASI
Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_EXTENDEDKEY =
&H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib
"user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags
As Long, ByVal dwExtraInfo As Long)
PENJELASAN DEKLARASI
Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
l Adalah
nilai kode dari tombol
l Artinya
tombol “H” mempunyai kode 72. tombol “E” berkode 69, dan seterusnya.
FUNCTION UTAMA
Private Sub Form_Paint()
Me.Cls
keybd_event VK_H, 0, 0, 0
keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_E, 0, 0, 0 ' press
E
keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_L, 0, 0, 0 ' press
L
keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_L, 0, 0, 0 ' press
L
keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_O, 0, 0, 0 ' press
O
keybd_event VK_O, 0, KEYEVENTF_KEYUP, 0
End Sub
PENJELASAN FUNCTION
keybd_event VK_H, 0, 0, 0
l Merupakan
API call untuk mensintesis ”tekan” tombol “H”
keybd_event VK_H, 0,
KEYEVENTF_KEYUP, 0
l API
call untuk mensintesis peng-angkat-an tombol “H”
l Penggabungan
dua API call di atas, mengsintesis sebuah pengetikan tombol “H”
DESAIN FORM UTAMA
HASIL RUNNING PROGRAM
PENGGABUNGAN DUA API CALL
l Untuk
lebih menyederhakan penggunaan, sebaiknya API call yang mensintesis sebuah
“pengetikan” tombol tertentu dijadikan sebuah Sub tersendiri
Public Sub tekan(i As Integer)
keybd_event
i, 0, keyeventf_keydown, 0
keybd_event
i, 0, KEYEVENTF_KEYUP, 0
End Sub
SINTESIS DUA TOMBOL
l Sub
untuk mensintesis penekanan dua tombol secara bersamaan. Misalnya untuk
mensintesis penekanan CTRL+N
Public Sub dobel
(
tahan
As Integer,
tekan
As Integer
)
keybd_event
tahan, 0, keyeventf_keydown, 0
keybd_event tekan, 0, keyeventf_keydown, 0
keybd_event tekan, 0, KEYEVENTF_KEYUP, 0
keybd_event tahan, 0, KEYEVENTF_KEYUP, 0
End Sub
No comments:
Post a Comment
silahkan membaca dan berkomentar