Translate

Tuesday, August 23, 2016

PEMROGRAMAN API [KEYBOARD EVENT]



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