Kemaren merupakan hari terakhir UTS, dan yang mendapat kehormatan menutup minggu UTS yang penuh perjuangan tersebut adalah UTS mata kuliah Pemrograman API yang diadakan di Laboratorium Pemrograman Jurusan Teknik Informatika ITS pada pukul 19.00 sampai 20.30.
Soalnya pun cukup mudah, cukup membuat aplikasi yang bisa secara otomatis mengirim “net send * nrp nama” dengan memanfaatkan fungsi API windows.
Berikut ini adalah cara pembuatannya. Selain itu akan dijelaskan pula, bagaimana menggerakkan mouse secara otomatis yang juga menggunakan fungsi API. Aplikasi yang memanfaatkan kedua fungsi ini, yaitu menggerakkan mouse dan mengetik secara otomatis disebut aplikasi robot digital.
# Mengetik secara otomatis #
Pertama-tama yang perlu dilakukan tentu adalah mendeklarasikan fungsi API yag akan dipakai. Dalam hal ini adalah keybd_event. Soal penjelasan fungsi ini secara lengkap beserta paramater dan contoh penggunaannya, bisa dilihat di API Guide. Cara pendeklarasiannya adalah sebagai berikut :
Private Declare Sub keybd_event Lib “user32.dll” (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Delarasikan juga konstanta untuk even menekan tombol dan menghentikan penekanan tombol.
Const KEYEVENTF_KEYUP = &H2
Const KEYEVENTF_KEYDOWN = &H0
Selain itu saya juga mendeklarasikan fungsi API Sleep untuk membuat jeda antara pengetikan huruf yang satu dengan yang lain. Deklarasinya adalah sebagai berikut :
Private Declare Sub Sleep Lib “kernel32″ (ByVal dwMilliseconds As Long)
Selanjutnya adalah mendeklarasikan konstanta virtual key untuk masing-masing tombol pada keyborad yang akan digunakan. Di sini saya menggunakan nilai ascii dalam bentuk hexadecimal.
Const VK_N = &H4E
Const VK_E = &H45
Const VK_T = &H54
Const VK_SPACE = &H20
Const VK_S = &H53
Const VK_D = &H44
Const VK_U = &H55
Const VK_P = &H50
Const VK_I = &H49
Const VK_A = &H41
Const VK_LSHIFT = &HA0
Const VK_ENTER = &HD
Const VK_8 = &H38
Const VK_5 = &H35
Const VK_1 = &H31
Const VK_0 = &H30
Const VK_3 = &H33
Persiapan sudah cukup. Sekarang tinggal menggunakannya sesuai kebutuhan kita. Pada soal UTS saya, aplikasi dituntut mampu mengirim pesan berupa nrp dan nama menggunakan net send. Untuk melakukannya saya mengetikkan perintah net send nya di menu run yang disediakan windows. Untuk memanggil window tersebut cukup dengan menekan tombol left windows dan tombol r. Oiya.. di aplikasi ini saya memasukan codenya di event tombol click artinya code akan dijalankan ketika user meng-click tombol.
Private Sub Command1_Click()
keybd_event VK_LWIN, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_R, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_R, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_N, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_N, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_E, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_T, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_T, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_SPACE, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_SPACE, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_S, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_S, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_E, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_N, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_N, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_D, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_D, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_SPACE, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_SPACE, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_LSHIFT, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_8, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_8, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_SPACE, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_SPACE, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_5, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_5, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_1, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_1, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_0, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_0, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_5, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_5, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_1, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_1, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_0, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_0, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_0, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_0, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_0, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_0, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_1, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_1, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_3, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_3, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_SPACE, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_SPACE, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_S, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_S, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_U, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_U, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_P, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_P, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_R, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_R, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_I, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_I, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_A, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_A, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_D, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_D, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_I, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_I, 0, KEYEVENTF_KEYUP, 0
Sleep 100
keybd_event VK_ENTER, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_ENTER, 0, KEYEVENTF_KEYUP, 0
End Sub
Cukup mudah bukan ? Sekarang cara untuk menggerakkan mosue secara otomatis. Di sini saya hanya menggunakan event leftdown ( untuk menekan tombol kir mouse ), leftup ( mengangkat tombol kiri mouse ) dan move ( yaitu menggerakkan mouse sejauh parameter x dan y ). Penjelasan lengkap dan contoh lainnya bisa dilihat di API Guide,
# menggerakkan mouse secara otomatis #
Dalam aplikasi ini, saya mencoba memanfaatkan fungsi API mouse_event untuk menggambar pola sederhana di aplikasi paint windows ( mspaint ). Untuk itu, saya gunakan juga fungsi API shell_execute untuk menjalankan program mspaint-nya. Digunakan juga fungsi API Sleep untuk jeda loading aplikasi mspaint dan penggambaran menggunakan mouse event.
Untuk deklarasi fungsi API yang digunakan adalah sebagai berikut :
Private Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Untuk fungsi shell_execute saya letakkan di kode bagian form, sedangkan untuk Sleep dan Mouse_event saya buatkan modul khusus. Di modul tersebut saya buat juga prosedur untuk menggambarnya. Selengkapnya adalah sebagai berikut :
Public Declare Sub Sleep Lib “kernel32″ (ByVal dwMilliseconds As Long)
Public Declare Sub mouse_event Lib “user32″ (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MOVE = &H1
Public Sub gambar()
Dim count As Integer
Dim pat As Integer
count = 0
pat = 3
While count <> 20
‘ garis datar ke kanan
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_MOVE, pat, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
‘ garis datar ke bawah
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_MOVE, 0, pat, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
pat = pat + 3
‘ garis datar ke kiri
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_MOVE, -pat, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
‘ garis datar ke atas
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_MOVE, 0, -pat, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
pat = pat + 3
count = count + 1
Wend
End Sub
Selanjutnya tinggal memanggilnya. Saya buat tombol di form untuk melakukannya..
Private Sub Command1_Click()
ShellExecute Me.hwnd, vbNullString, “mspaint”, vbNullString, “C:\”, SW_SHOWNORMAL
Call Sleep(1000)
Call gambar
End Sub
Selamat mencoba. Sadarilah betapa mudahnya cara pembuatannya dan betapa exciting hasilnya. Juga betapa luas pengembangan yang bisa dilakukan baik untuk tujuan positif maupun yang negatif.
Sekian.. Terima Kasih..
Sek.. sek.. bentar.. bentar .. kok aq ngrasanya gaya bahasa tulisan di atas gak kayak biasanya ya ? Sok formal getu dan pake “saya” segala
Wew.. ga tau juga .. nulisnya refleks saja dan ternyata begitulah hasilnya :))

Take the Magic: The Gathering ‘What Color Are You?’ Quiz.