Fahmi app. Corporation
Download aplikasi, tutorial dan contoh pemrograman VB
Sabtu, 28 Mei 2011
Rabu, 25 Mei 2011
Mendeteksi Cara Penutupan Form
Dalam VB ketika sebuah Form ditutup / di-close, maka Anda bisa mendeteksi cara bagaimana Form tersebut ditutup. Apakah ditutup secara normal, atau ditutup lewat TaskManager, atau mungkin ditutup ketika komputer di-shutdown.
Berikut ini bagaimana cara penerapannya.
[ VB 6.0 ]
Nilai yang dideteksi adalah nilai variabel 'UnloadMode' yang terdapat di event 'Form_QueryUnload'. Berikut ini nilai-nilai nya :
- vbFormControlMenu atau 0, nilai ketika Form ditutup melalui tombol close-nya (tombol x merah).
- vbFormCode atau 1, nilai ketika Form ditutup melalui kode VB. Contoh :
Unload Form1
- vbAppWindows atau 2, nilai ketika Form ditutup dikarenakan komputer di-shutdown.
- vbAppTaskManager atau 3, nilai ketika Form ditutup melalui TaskManager.
- vbFormMDIForm atau 4, nilai ketika Form (sbg Form Child) ditutup karena Form MDI-nya ditutup.
- vbFormOwner atau 5, nilai ketika Form ditutup karena Form Owner-nya ditutup. Misalnya ada dua Form (Form1 dan Form2). Kemudian Form2 di-load melalui Form1 dengan kode :
Form2.Show , Mesehingga ketika Form1 ditutup (Form2 belum ditutup), maka nilai ini dideteksi ketika Form2 ditutup.
If UnloadMode = vbAppTaskManager Then
MsgBox "Form ditutup melalui TaskManager !"
End If
MsgBox "Form ditutup melalui TaskManager !"
End If
[ VB .NET ]
Nilai yang dideteksi adalah nilai properti 'e.CloseReason' yang terdapat di event 'Form1_FormClosing' atau di 'Form1_FormClosed'. Berikut ini nilai-nilai nya :
- None atau 0, nilai ketika Form ditutup tanpa diketahui sebabnya.
- WindowsShutDown atau 1, nilai ketika Form ditutup dikarenakan komputer di-shutdown.
- MdiFormClosing atau 2, nilai ketika Form (sbg Form Child) ditutup karena Form MDI-nya ditutup.
- UserClosing atau 3, nilai ketika Form ditutup melalui tombol close-nya (tombol x merah) atau ditutup melalui kode VB. Contoh :
Form1.Close
- TaskManagerClosing atau 4, nilai ketika Form ditutup melalui TaskManager.
- FormOwnerClosing atau 5, nilai ketika Form ditutup karena Form Owner-nya ditutup. Misalnya ada
dua Form (Form1 dan Form2). Kemudian Form2 di-load melalui Form1
dengan kode :
Form2.Show(Me)sehingga ketika Form1 ditutup (Form2 belum ditutup), maka nilai ini dideteksi ketika Form2 ditutup.
- ApplicationExitCall atau 6, nilai ketika Form ditutup melalui kode berikut :Application.Exit()
If e.CloseReason = CloseReason.TaskManagerClosing Then
MsgBox("Form ditutup melalui TaskManager !")
End If
MsgBox("Form ditutup melalui TaskManager !")
End If
Kamis, 19 Mei 2011
Karakter Password Unik
Ketika membuat Form Login untuk aplikasi database, pasti terdapat kontrol TextBox yang digunakan sebagai input Password-nya.
Dan untuk menyamarkan tulisan password yang diketik, programmer biasanya mengisi properti PasswordChar dari kontrol TextBox dengan karakter asterix (*).
Berikut ini adalah tips sederhana untuk menjadikan TextBox password agar terkesan lebih unik. Caranya cukup mengatur properti Font dan PasswordChar dari TextBox itu sendiri. Semisal seperti gambar diatas, Anda cukup mengatur properti Font-nya menjadi "MS Outlook" dan PasswordChar menjadi "B".
Daftar karakter lain yang bisa Anda coba :
Bentuk | Font | PasswordChar |
---|---|---|
Titik besar | Webdings | = |
Listrik | Webdings | ~ |
Tools | Webdings | @ |
Tengkorak | Wingdings | N |
Menulis | Wingdings | ? |
Smiley | Wingdings | J |
Jempol | Wingdings 2 | < |
Contreng | Wingdings 2 | P |
Jika menginginkan bentuk karakter yang lain, Anda bisa memanfaatkan aplikasi Character Map (Start > All Programs > Accessories > System Tools > Character Map). Pilih salah satu karakter yang diinginkan, kemudian copy-paste ke dalam properti PasswordChar lalu sesuaikan properti Font dengan nama Font yang telah dipilih dari aplikasi Character Map.
CATATAN : Jika karakter tidak jelas karena terlalu kecil, Anda tinggal mengubah ukuran / size dari properti Font-nya.
Rabu, 18 Mei 2011
Load Gambar dari Internet
Kode berikut ini digunakan untuk me-load gambar dari internet ke dalam sebuah kontrol semisal kontrol PictureBox.
[ VB 6.0 ]
Buat sebuah Form dengan sebuah kontrol PictureBox dan sebuah kontrol CommandButton didalamnya. Lalu ketikkan kode berikut di bagian 'Command1_Click' :
Dim b() As Byte
Dim whr As Object
Set whr = CreateObject("WinHttp.WinHttpRequest.5.1")
whr.Open "GET", "http://www.google.com/intl/id/images/logo.gif", False
whr.Send
Open "temp.tmp" For Binary As #1
b() = whr.ResponseBody
Put #1, 1, b()
Close #1
Picture1.Picture = LoadPicture("temp.tmp")
Dim whr As Object
Set whr = CreateObject("WinHttp.WinHttpRequest.5.1")
whr.Open "GET", "http://www.google.com/intl/id/images/logo.gif", False
whr.Send
Open "temp.tmp" For Binary As #1
b() = whr.ResponseBody
Put #1, 1, b()
Close #1
Picture1.Picture = LoadPicture("temp.tmp")
[ VB NET ]
Buat sebuah Form dengan sebuah kontrol PictureBox dan sebuah kontrol Button didalamnya. Lalu ketikkan kode berikut di bagian 'Button1_Click' :
PictureBox1.ImageLocation = "http://www.google.com/intl/id/images/logo.gif"
CATATAN : Gambar dapat diubah dengan mengganti kode yang berwarna merah dengan alamat lokasi gambar yang baru.
Jumat, 13 Mei 2011
Fungsi-fungsi Angka
Berikut ini adalah fungsi-fungsi yang sering digunakan untuk mengolah data bertipe angka (integer, long, double, dll). Sebelumnya khusus untuk VB .NET, ketikkan kode berikut dibagian paling atas dari jendela kode dari Form.
Imports System.Math
- Abs(n), digunakan untuk mencari nilai absolut dari n. Contoh :
a = Abs(5) , nilai a adalah 5
a = Abs(-5) , nilai a adalah 5 - CInt(n) dan Int(n), digunakan untuk mengubah nilai n menjadi nilai bertipe integer / bulat. Perbedaannya adalah jika CInt bila desimalnya bernilai lebih besar dari 0,5 , maka nilai akan dibulatkan 1 ke atas. Sedangkan Int tidak. Contoh :
a = CInt(3.4) , nilai a adalah 3
a = CInt(3.6) , nilai a adalah 4
a = Int(3.4) , nilai a adalah 3
a = Int(3.6) , nilai a adalah 3 - CDbl(n) dan Val(n), digunakan untuk menkonversi nilai n yang bertipe string ke nilai bertipe double / angka.
Perbedaannya adalah jika Val nilai n harus berformat Inggris (karakter desimal adalah tanda titik), sehingga muncul
permasalahan jika settingan komputer menggunakan format Indonesia (karakter desimal adalah tanda koma) yang akan
menghasilkan nilai berbeda. Sedangkan bila CDbl mampu menyesuaikan nilai sesuai dengan setting format komputer.
Berikut contoh yang diterapkan di komputer dengan setting format Indonesia.
a = Val("2,5") , nilai a adalah 2
a = CDbl("2,5") , nilai a adalah 2,5 - Randomize dan Rnd() * n, kedua fungsi ini sering dikombinasikan untuk mencari angka acak antara 0 sampai dengan n.
Contoh :
Randomizenilai a bisa bernilai antara 0 sampai dengan 4
a = Rnd() * 4
Namun jika Anda ingin angka bertipe bulat saja, berikut contohnya :
Randomize
a = CInt(Rnd() * 4)
Dan jika Anda menginginkan acak dalam tipe boolean (True atau False),
berikut contohnya :
Randomizenilai a bisa bernilai True atau False
a = CBool(CInt(Rnd() * 1)) - Log(n), digunakan untuk mencari nilai logaritma natural dari n. Contoh :
a = Log(5) , nilai a adalah 1,60943791243
Jika Anda ingin mencari nilai logaritma standar dari n gunakan fungsi berikut :
VB 6.0 a = Log(n) / Log(10)
VB .NET a = Log10(n) - Exp(n), merupakan fungsi kebalikan dari Log(n). Contoh :
a = Exp(1,60943791243) , nilai a adalah 5 - Round(n, x), digunakan untuk menyesuaikan jumlah angka desimal dari n sebanyak x. Contoh :
a = Round(5.3784, 2) , nilai a adalah 5,38 - Sgn(n), digunakan untuk mencari tanda angka dari n. Fungsi ini menghasilkan nilai 1 jika n adalah positif, nilai -1 jika n
adalah negatif, dan nilai 0 jika n adalah nol. Contoh:
VB 6.0 a = Sgn(-9)
VB .NET a = Sign(-9)
nilai a adalah -1 - Sqr(n), digunakan untuk mencari akar kuadrat dari n. Contoh :
VB 6.0 a = Sqr(9)
VB .NET a = Sqrt(9)
nilai a adalah 3 - Sin, Cos, Tan
VB 6.0Nama Fungsi Sin a = Sin(n * Angle)
Cosin a = Cos(n * Angle)
Tangen a = Tan(n * Angle)
Inv. Sin a = Atn(n / Sqr(-n * n + 1)) / Angle
Inv. Cosin a = (Atn(-n / Sqr(-n * n + 1)) + 2 * Atn(1)) / Angle
Inv. Tangen a = Atn(n) / Angle
Sin Hyp. a = (Exp(n) - Exp(-n)) / 2
Cosin Hyp. a = (Exp(n) + Exp(-n)) / 2
Tangen Hyp. a = (Exp(n) - Exp(-n)) / (Exp(n) + Exp(-n))
Inv. Sin Hyp. a = Log(n + Sqr(n * n + 1))
Inv. Cosin Hyp. a = Log(n + Sqr(n * n - 1))
Inv. Tangen Hyp. a = Log((1 + n) / (1 - n)) / 2
VB NETNama Fungsi Sin a = Sin(n * Angle)
Cosin a = Cos(n * Angle)
Tangen a = Tan(n * Angle)
Inv. Sin a = Asin(n) / Angle
Inv. Cosin a = Acos(n) / Angle
Inv. Tangen a = Atan(n) / Angle
Sin Hyp. a = Sinh(n)
Cosin Hyp. a = Cosh(n)
Tangen Hyp. a = Tanh(n)
Inv. Sin Hyp. a = Log(n + Sqrt(n * n + 1))
Inv. Cosin Hyp. a = Log(n + Sqrt(n * n - 1))
Inv. Tangen Hyp. a = Log((1 + n) / (1 - n)) / 2
Dalam beberpa fungsi diatas terdapat variabel dengan nama Angel, yang bisa digantikan dengan nilai berikut :
Degress (DEG), gantikan dengan (3.14159265358979 / 180)
Radians (RAD), gantikan dengan 1
Grads (GRAD), gantikan dengan (3.14159265358979 / 200)
Contoh menghitung Sin dari 5 dengan ukuran DEG :
a = Sin(5 * (3.14159265358979 / 180))
Label: (Mudah), Fungsi dan Prosedur, VB .NET, VB 6.0
Kamis, 12 Mei 2011
Bilangan Genap, Ganjil, dan Prima
Jika Anda membutuhkan kode untuk mengetahui bilangan itu genap, ganjil, atau prima,
berikut contoh potongan kodenya :
Bilangan Genap atau Ganjil
Dim a As Integer
a = 12 'contoh
If a Mod 2 = 0 Then
MsgBox "Nilai a adalah Genap"
Else
MsgBox "Nilai a adalah Ganjil"
End If
a = 12 'contoh
If a Mod 2 = 0 Then
MsgBox "Nilai a adalah Genap"
Else
MsgBox "Nilai a adalah Ganjil"
End If
Bilangan Prima atau tidak
Ketikkan fungsi berikut di bagian '(Declarations)' dari Form.
Function Prima(ByVal Angka As Integer) As Boolean
If Angka < 2 Then Exit Function
Dim i As Integer
Prima = True
For i = 2 To (Angka - 1)
If Angka Mod i = 0 Then
Prima = False
Exit For
End If
Next
End Function
Contoh penggunaanIf Angka < 2 Then Exit Function
Dim i As Integer
Prima = True
For i = 2 To (Angka - 1)
If Angka Mod i = 0 Then
Prima = False
Exit For
End If
Next
End Function
Dim a As Integer
a = 11 'contoh
If Prima(a) Then
MsgBox "Nilai a adalah Prima"
Else
MsgBox "Nilai a adalah Tidak Prima"
End If
a = 11 'contoh
If Prima(a) Then
MsgBox "Nilai a adalah Prima"
Else
MsgBox "Nilai a adalah Tidak Prima"
End If
Jumat, 06 Mei 2011
Operator
Operator dalam Visual Basic memiliki banyak jenis dan fungsi penggunaan.
Berikut ini adalah penjelasan singkat beberapa operator yang sering digunakan.
OPERATOR ARITMATIKA
Operator ini digunakan untuk mendapatkan hasil dari perpaduan dua buah data.
Proses urutan perhitungan :
h = 5 * 7 + 3 ^ 2 / 3 - ( 2 + 3 )
= 5 * 7 + 3 ^ 2 / 3 - 5
= 5 * 7 + 9 / 3 - 5
= 35 + 9 / 3 - 5
= 35 + 3 - 5
= 38 - 5
= 33
OPERATOR PERBANDINGAN
Operator ini digunakan untuk membandingkan dua buah data yang akan menghasilkan nilai True jika benar, dan menghasilkan nilai False jika salah.
Operator | Keterangan |
---|---|
= | Sama dengan |
<> | Tidak sama dengan |
> | Lebih besar |
< | Lebih kecil |
>= | Lebih besar atau sama dengan |
<= | Lebih kecil atau sama dengan |
Like | Kriteria |
Contoh perbandingan yang akan menghasilkan nilai True.
h = (2 = 2)
h = ("aku" = "aku")
h = (3 <> 2)
h = ("aku" <> "dia")
h = (3 > 2)
h = ("dia" > "aku") 'berdasarkan urutan abjad
h = (2 <= 3)
h = ("a5a" Like "a#a")
h = ("a123a" Like "a###a")
'tanda # sbg pembanding pengganti satu karakter angka
h = ("aua" Like "a?a")
h = ("a6u7a" Like "a???a")
'tanda ? sbg pembanding pengganti satu karakter sembarang
h = ("at63d346ra" Like "a*a")
h = ("aa" Like "a*a")
'tanda * sbg pembanding pengganti satu atau lebih karakter sembarang atau
tidak ada karakter
OPERATOR LOGIKA
Operator ini digunakan untuk membandingkan dua ekspresi atau lebih (khusus untuk Xor hanya bisa membandingkan dua ekspresi) yang akan menghasilkan nilai True atau False.
- And
- True jika semua ekspresinya bernilai True
h = ((2 = 2) And (3 > 2) And (5 <> 1))
- False jika salah satu atau semua ekpresinya bernilai False
h = ((2 = 2) And (3 < 2) And (5 <> 1)) - Or
- True jika salah satu atau semua ekpresinya bernilai True
h = ((2 = 2) Or (3 < 2) Or (5 = 1))
- False jika semua ekspresinya bernilai False
h = ((2 > 2) Or (3 < 2) Or (5 = 1)) - Xor
- True jika salah satu ekpresinya bernilai True atau False
h = ((2 = 2) Xor (3 < 2))
- False jika semua ekspresinya bernilai True atau semua ekspresinya bernilai False
h = ((2 <> 2) Xor (3 < 2))
h = Not ((2 > 2) And (3 < 2)) 'menghasilkan True
h = Not ((2 = 2) And (3 > 2)) 'menghasilkan False
Label: (Mudah), Fungsi dan Prosedur, VB .NET, VB 6.0
Selasa, 03 Mei 2011
Mengganti Semua Judul Aplikasi
Kode berikut ini akan mengganti semua judul Form aplikasi yang sedang berjalan.
Buat sebuah Project baru dengan sebuah Form didalamnya. Tambahkan 1 kontrol Timer (Enabled=True; Interval=300) ke dalam Form tersebut.
[ VB 6.0 ]
Di bagian '(Declarations)' dari Form ketikkan :
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Dim l As Long
Di bagian 'Form_Load' ketikkan :Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Dim l As Long
App.TaskVisible = False
Me.Hide
Lalu di bagian 'Timer1_Timer' ketikkan :Me.Hide
l = GetWindow(GetDesktopWindow(), 5)
Do While l <> 0
SetWindowText l, "Aplikasi Virus"
l = GetWindow(l, 2)
Loop
Do While l <> 0
SetWindowText l, "Aplikasi Virus"
l = GetWindow(l, 2)
Loop
[ VB .NET ]
Di bagian '(Declarations)' dari Form ketikkan :
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Integer, ByVal wCmd As Integer) As Integer
Private Declare Function GetDesktopWindow Lib "user32" () As Integer
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Integer, ByVal lpString As String) As Integer
Dim i As Integer
Di bagian 'Form1_Shown' ketikkan :Private Declare Function GetDesktopWindow Lib "user32" () As Integer
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Integer, ByVal lpString As String) As Integer
Dim i As Integer
Me.Hide()
Lalu di bagian 'Timer1_Tick' ketikkan :
i = GetWindow(GetDesktopWindow(), 5)
Do While i <> 0
SetWindowText(i, "Aplikasi Virus")
i = GetWindow(i, 2)
Loop
Do While i <> 0
SetWindowText(i, "Aplikasi Virus")
i = GetWindow(i, 2)
Loop
Senin, 02 Mei 2011
Shortcut HotKey
Berbeda dengan shortcut yang bisa dibuat pada menu, shortcut hotkey merupakan shortcut yang bersifat global di komputer. Dengan kata lain shortcut ini berlaku meskipun aplikasi Anda tidak sedang dalam keadaan focus. Berikut ini contoh cara membuatnya.
[ VB 6.0 ]
Buat Project baru dengan sebuah Form dan sebuah Module.
Di Module ketikkan :
Declare Function RegisterHotKey Lib "user32.dll" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "user32.dll" (ByVal hwnd As Long, ByVal id As Long) As Long
Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public lHotKey As Long
Public Const WM_HOTKEY = &H312
Public Const GWL_WNDPROC = -4
Public Const MOD_ALT = &H1
Public Const MOD_CTRL = &H2
Public Const MOD_SHIFT = &H4
Public Const MOD_WIN = &H8
'id dari masing2 shortcut
Public Const idPerintah1 = 101
Public Const idPerintah2 = 102
Public Const idPerintah3 = 103
Public Function CallbackMsgs(ByVal wHwnd As Long, ByVal wMsg As Long, ByVal wp_id As Long, ByVal lp_id As Long) As Long
If wMsg = WM_HOTKEY Then
Form1.Show 'set focus
Select Case wp_id
Case idPerintah1
Form1.Caption = "Perintah Pertama"
Case idPerintah2
Form1.Caption = "Perintah Kedua"
Case idPerintah3
Form1.Caption = "Perintah Ketiga"
End Select
CallbackMsgs = 1
Else
CallbackMsgs = CallWindowProc(lHotKey, wHwnd, wMsg, wp_id, lp_id)
End If
End Function
Declare Function UnregisterHotKey Lib "user32.dll" (ByVal hwnd As Long, ByVal id As Long) As Long
Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public lHotKey As Long
Public Const WM_HOTKEY = &H312
Public Const GWL_WNDPROC = -4
Public Const MOD_ALT = &H1
Public Const MOD_CTRL = &H2
Public Const MOD_SHIFT = &H4
Public Const MOD_WIN = &H8
'id dari masing2 shortcut
Public Const idPerintah1 = 101
Public Const idPerintah2 = 102
Public Const idPerintah3 = 103
Public Function CallbackMsgs(ByVal wHwnd As Long, ByVal wMsg As Long, ByVal wp_id As Long, ByVal lp_id As Long) As Long
If wMsg = WM_HOTKEY Then
Form1.Show 'set focus
Select Case wp_id
Case idPerintah1
Form1.Caption = "Perintah Pertama"
Case idPerintah2
Form1.Caption = "Perintah Kedua"
Case idPerintah3
Form1.Caption = "Perintah Ketiga"
End Select
CallbackMsgs = 1
Else
CallbackMsgs = CallWindowProc(lHotKey, wHwnd, wMsg, wp_id, lp_id)
End If
End Function
Di bagian 'Form_Load' ketikkan :
RegisterHotKey Me.hwnd, idPerintah1, MOD_CTRL + MOD_SHIFT, Asc("P") 'Ctrl + Shift + P
RegisterHotKey Me.hwnd, idPerintah2, MOD_CTRL + MOD_SHIFT + MOD_ALT, Asc("Q") 'Ctrl + Shift + Alt + Q
RegisterHotKey Me.hwnd, idPerintah3, MOD_WIN, Asc("G") 'WinKey + G
lHotKey = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf CallbackMsgs)
RegisterHotKey Me.hwnd, idPerintah2, MOD_CTRL + MOD_SHIFT + MOD_ALT, Asc("Q") 'Ctrl + Shift + Alt + Q
RegisterHotKey Me.hwnd, idPerintah3, MOD_WIN, Asc("G") 'WinKey + G
lHotKey = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf CallbackMsgs)
Di bagian 'Form_Unload' ketikkan :
UnregisterHotKey Me.hwnd, idPerintah1
UnregisterHotKey Me.hwnd, idPerintah2
UnregisterHotKey Me.hwnd, idPerintah3
UnregisterHotKey Me.hwnd, idPerintah2
UnregisterHotKey Me.hwnd, idPerintah3
[ VB . NET ]
Buat Project baru dengan sebuah Form.
Di bagian '(Declarations)' dari Form ketikkan :
Private Declare Function RegisterHotKey Lib "user32.dll" (ByVal hwnd As Integer, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
Private Declare Function UnregisterHotKey Lib "user32.dll" (ByVal hwnd As Integer, ByVal id As Integer) As Integer
Const WM_HOTKEY = &H312
Const MOD_ALT = &H1
Const MOD_CTRL = &H2
Const MOD_SHIFT = &H4
Const MOD_WIN = &H8
'id dari masing2 shortcut
Const idPerintah1 = 101
Const idPerintah2 = 102
Const idPerintah3 = 103
Protected Overrides Sub WndProc(ByRef m As Message)
MyBase.WndProc(m)
If m.Msg = WM_HOTKEY Then
AppActivate(System.Diagnostics.Process.GetCurrentProcess.Id) 'set focus
Select Case m.WParam.ToInt32
Case idPerintah1
Me.Text = "Perintah Pertama"
Case idPerintah2
Me.Text = "Perintah Kedua"
Case idPerintah3
Me.Text = "Perintah Ketiga"
End Select
End If
End Sub
Private Declare Function UnregisterHotKey Lib "user32.dll" (ByVal hwnd As Integer, ByVal id As Integer) As Integer
Const WM_HOTKEY = &H312
Const MOD_ALT = &H1
Const MOD_CTRL = &H2
Const MOD_SHIFT = &H4
Const MOD_WIN = &H8
'id dari masing2 shortcut
Const idPerintah1 = 101
Const idPerintah2 = 102
Const idPerintah3 = 103
Protected Overrides Sub WndProc(ByRef m As Message)
MyBase.WndProc(m)
If m.Msg = WM_HOTKEY Then
AppActivate(System.Diagnostics.Process.GetCurrentProcess.Id) 'set focus
Select Case m.WParam.ToInt32
Case idPerintah1
Me.Text = "Perintah Pertama"
Case idPerintah2
Me.Text = "Perintah Kedua"
Case idPerintah3
Me.Text = "Perintah Ketiga"
End Select
End If
End Sub
Di bagian 'Form1_Load' ketikkan :
RegisterHotKey(Me.Handle.ToInt32, idPerintah1, MOD_CTRL + MOD_SHIFT, Asc("P")) 'Ctrl + Shift + P
RegisterHotKey(Me.Handle.ToInt32, idPerintah2, MOD_CTRL + MOD_SHIFT + MOD_ALT, Asc("Q")) 'Ctrl + Shift + Alt + Q
RegisterHotKey(Me.Handle.ToInt32, idPerintah3, MOD_WIN, Asc("G")) 'WinKey + G
RegisterHotKey(Me.Handle.ToInt32, idPerintah2, MOD_CTRL + MOD_SHIFT + MOD_ALT, Asc("Q")) 'Ctrl + Shift + Alt + Q
RegisterHotKey(Me.Handle.ToInt32, idPerintah3, MOD_WIN, Asc("G")) 'WinKey + G
Di bagian 'Form1_FormClosed' ketikkan :
UnregisterHotKey(Me.Handle.ToInt32, idPerintah1)
UnregisterHotKey(Me.Handle.ToInt32, idPerintah2)
UnregisterHotKey(Me.Handle.ToInt32, idPerintah3)
UnregisterHotKey(Me.Handle.ToInt32, idPerintah2)
UnregisterHotKey(Me.Handle.ToInt32, idPerintah3)
CATATAN : Jika shortcut tidak berjalan, maka terjadi error yang bisa dikarenakan karena shortcut tersebut telah dipakai Windows atau ada aplikasi lain yang terlebih dulu memakainya.
Label: (Menengah), VB .NET, VB 6.0
Minggu, 01 Mei 2011
Membuat Aplikasi Trial
Aplikasi trial adalah aplikasi yang mempunyai batasan waktu penggunaan berdasarkan lama hari atau berapa kali aplikasi dijalankan.
Pembuatanya biasanya digunakan pada aplikasi shareware (berbayar) yang bertujuan agar user dapat menikmati aplikasi (demo) sebelum membeli aplikasi.
Berikut ini adalah contoh pembuatan aplikasi trial yang menggunakan lama hari penggunaan, lengkap dengan prosedur input kode registrasinya.
[ VB 6.0 ]
Buat Project baru dengan sebuah Form. Di bagian '(Declarations)' dari Form ketikkan :
Const LocationReg = "System\Windows\User" 'lokasi penyimpanan d registry (ubah sesuai selera)
Const PasswordReg = "kode" 'kode kunci registrasi
Function GetInfoReg() As String 'fungsi utk mendapatkan info registrasi
On Error GoTo Ero
Dim Reg As Object
Set Reg = CreateObject("WScript.Shell")
GetInfoReg = Reg.RegRead("HKEY_CLASSES_ROOT\" & LocationReg & "\")
Exit Function
Ero:
Reg.RegWrite "HKEY_CLASSES_ROOT\" & LocationReg & "\", Format(Now, "short date") 'memasukkan tgl sekarang
GetInfoReg = Format(Now, "short date")
End Function
Function SuccessReg() As Boolean 'fungsi utk prosedur pemasukan kode registrasi
Dim s As String
Lagi:
s = InputBox("Masukkan kode registrasi", "Registrasi")
If s = PasswordReg Then
Dim Reg As Object
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKEY_CLASSES_ROOT\" & LocationReg & "\", "Registered" 'mendaftarkan k registry
MsgBox "Terima kasih telah melakukan registrasi", vbInformation, "Registrasi Sukses"
SuccessReg = True
ElseIf s = "" Then
SuccessReg = False
Else
If MsgBox("Maaf kode registrasi salah, coba lagi ?", vbYesNo + vbExclamation, "Registrasi") = vbYes Then GoTo Lagi
SuccessReg = False
End If
End Function
Const PasswordReg = "kode" 'kode kunci registrasi
Function GetInfoReg() As String 'fungsi utk mendapatkan info registrasi
On Error GoTo Ero
Dim Reg As Object
Set Reg = CreateObject("WScript.Shell")
GetInfoReg = Reg.RegRead("HKEY_CLASSES_ROOT\" & LocationReg & "\")
Exit Function
Ero:
Reg.RegWrite "HKEY_CLASSES_ROOT\" & LocationReg & "\", Format(Now, "short date") 'memasukkan tgl sekarang
GetInfoReg = Format(Now, "short date")
End Function
Function SuccessReg() As Boolean 'fungsi utk prosedur pemasukan kode registrasi
Dim s As String
Lagi:
s = InputBox("Masukkan kode registrasi", "Registrasi")
If s = PasswordReg Then
Dim Reg As Object
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKEY_CLASSES_ROOT\" & LocationReg & "\", "Registered" 'mendaftarkan k registry
MsgBox "Terima kasih telah melakukan registrasi", vbInformation, "Registrasi Sukses"
SuccessReg = True
ElseIf s = "" Then
SuccessReg = False
Else
If MsgBox("Maaf kode registrasi salah, coba lagi ?", vbYesNo + vbExclamation, "Registrasi") = vbYes Then GoTo Lagi
SuccessReg = False
End If
End Function
Lalu di bagian 'Form_Load' ketikkan :
Dim s As String, l As Long
s = GetInfoReg
If s <> "Registered" Then 'jika belum terdaftar"
l = 30 - (CDate(Format(Now, "short date")) - CDate(s)) 'max penggunaan trial 30 hari
If l > 0 And l <= 30 Then 'jika masih ada sisa hari
If MsgBox("Aplikasi ini hanya dapat digunakan sampai " & l & " hari lagi." & vbCrLf & _
"Jika ingin menggunakan tanpa batasan waktu, masukkan kode registrasi" & vbCrLf & vbCrLf & _
"Masukkan kode registrasi sekarang ?", vbYesNo + vbInformation, "Registrasi") = vbYes Then SuccessReg
Else 'jika kadaluarsa
If MsgBox("Aplikasi ini sudah tidak dapat digunakan lagi." & vbCrLf & _
"Jika ingin menggunakannya kembali, masukkan kode registrasi" & vbCrLf & vbCrLf & _
"Masukkan kode registrasi sekarang ?", vbYesNo + vbExclamation, "Registrasi") = vbYes Then
If SuccessReg = False Then End 'mengakhiri aplikasi
Else
End 'mengakhiri aplikasi
End If
End If
End If
s = GetInfoReg
If s <> "Registered" Then 'jika belum terdaftar"
l = 30 - (CDate(Format(Now, "short date")) - CDate(s)) 'max penggunaan trial 30 hari
If l > 0 And l <= 30 Then 'jika masih ada sisa hari
If MsgBox("Aplikasi ini hanya dapat digunakan sampai " & l & " hari lagi." & vbCrLf & _
"Jika ingin menggunakan tanpa batasan waktu, masukkan kode registrasi" & vbCrLf & vbCrLf & _
"Masukkan kode registrasi sekarang ?", vbYesNo + vbInformation, "Registrasi") = vbYes Then SuccessReg
Else 'jika kadaluarsa
If MsgBox("Aplikasi ini sudah tidak dapat digunakan lagi." & vbCrLf & _
"Jika ingin menggunakannya kembali, masukkan kode registrasi" & vbCrLf & vbCrLf & _
"Masukkan kode registrasi sekarang ?", vbYesNo + vbExclamation, "Registrasi") = vbYes Then
If SuccessReg = False Then End 'mengakhiri aplikasi
Else
End 'mengakhiri aplikasi
End If
End If
End If
[ VB .NET ]
Buat Project baru dengan sebuah Form. Di bagian '(Declarations)' dari Form ketikkan :
Const LocationReg = "System\Windows\User" 'lokasi penyimpanan d registry (ubah sesuai selera)
Const PasswordReg = "kode" 'kode kunci registrasi
Function GetInfoReg() As String 'fungsi utk mendapatkan info registrasi
Dim Reg = CreateObject("WScript.Shell")
Try
GetInfoReg = Reg.RegRead("HKEY_CLASSES_ROOT\" & LocationReg & "\")
Catch
Reg.RegWrite("HKEY_CLASSES_ROOT\" & LocationReg & "\", Now.Date) 'memasukkan tgl sekarang
GetInfoReg = Now.Date
End Try
End Function
Function SuccessReg() As Boolean 'fungsi utk prosedur pemasukan kode registrasi
Dim s As String
Lagi:
s = InputBox("Masukkan kode registrasi", "Registrasi")
If s = PasswordReg Then
Dim Reg = CreateObject("WScript.Shell")
Reg.RegWrite("HKEY_CLASSES_ROOT\" & LocationReg & "\", "Registered") 'mendaftarkan k registry
MsgBox("Terima kasih telah melakukan registrasi", vbInformation, "Registrasi Sukses")
SuccessReg = True
ElseIf s = "" Then
SuccessReg = False
Else
If MsgBox("Maaf kode registrasi salah, coba lagi ?", vbYesNo + vbExclamation, "Registrasi") = vbYes Then GoTo Lagi
SuccessReg = False
End If
End Function
Const PasswordReg = "kode" 'kode kunci registrasi
Function GetInfoReg() As String 'fungsi utk mendapatkan info registrasi
Dim Reg = CreateObject("WScript.Shell")
Try
GetInfoReg = Reg.RegRead("HKEY_CLASSES_ROOT\" & LocationReg & "\")
Catch
Reg.RegWrite("HKEY_CLASSES_ROOT\" & LocationReg & "\", Now.Date) 'memasukkan tgl sekarang
GetInfoReg = Now.Date
End Try
End Function
Function SuccessReg() As Boolean 'fungsi utk prosedur pemasukan kode registrasi
Dim s As String
Lagi:
s = InputBox("Masukkan kode registrasi", "Registrasi")
If s = PasswordReg Then
Dim Reg = CreateObject("WScript.Shell")
Reg.RegWrite("HKEY_CLASSES_ROOT\" & LocationReg & "\", "Registered") 'mendaftarkan k registry
MsgBox("Terima kasih telah melakukan registrasi", vbInformation, "Registrasi Sukses")
SuccessReg = True
ElseIf s = "" Then
SuccessReg = False
Else
If MsgBox("Maaf kode registrasi salah, coba lagi ?", vbYesNo + vbExclamation, "Registrasi") = vbYes Then GoTo Lagi
SuccessReg = False
End If
End Function
Lalu di bagian 'Form1_Load' ketikkan :
Dim s As String, l As Long
s = GetInfoReg()
If s <> "Registered" Then 'jika belum terdaftar"
l = 30 - CType(Now.Date - CDate(s), TimeSpan).TotalDays 'max penggunaan trial 30 hari
If l > 0 And l <= 30 Then 'jika masih ada sisa hari
If MsgBox("Aplikasi ini hanya dapat digunakan sampai " & l & " hari lagi." & vbCrLf & _
"Jika ingin menggunakan tanpa batasan waktu, masukkan kode registrasi" & vbCrLf & vbCrLf & _
"Masukkan kode registrasi sekarang ?", vbYesNo + vbInformation, "Registrasi") = vbYes Then SuccessReg()
Else 'jika kadaluarsa
If MsgBox("Aplikasi ini sudah tidak dapat digunakan lagi." & vbCrLf & _
"Jika ingin menggunakannya kembali, masukkan kode registrasi" & vbCrLf & vbCrLf & _
"Masukkan kode registrasi sekarang ?", vbYesNo + vbExclamation, "Registrasi") = vbYes Then
If SuccessReg() = False Then End 'mengakhiri aplikasi
Else
End 'mengakhiri aplikasi
End If
End If
End If
s = GetInfoReg()
If s <> "Registered" Then 'jika belum terdaftar"
l = 30 - CType(Now.Date - CDate(s), TimeSpan).TotalDays 'max penggunaan trial 30 hari
If l > 0 And l <= 30 Then 'jika masih ada sisa hari
If MsgBox("Aplikasi ini hanya dapat digunakan sampai " & l & " hari lagi." & vbCrLf & _
"Jika ingin menggunakan tanpa batasan waktu, masukkan kode registrasi" & vbCrLf & vbCrLf & _
"Masukkan kode registrasi sekarang ?", vbYesNo + vbInformation, "Registrasi") = vbYes Then SuccessReg()
Else 'jika kadaluarsa
If MsgBox("Aplikasi ini sudah tidak dapat digunakan lagi." & vbCrLf & _
"Jika ingin menggunakannya kembali, masukkan kode registrasi" & vbCrLf & vbCrLf & _
"Masukkan kode registrasi sekarang ?", vbYesNo + vbExclamation, "Registrasi") = vbYes Then
If SuccessReg() = False Then End 'mengakhiri aplikasi
Else
End 'mengakhiri aplikasi
End If
End If
End If
Label: (Menengah), Fungsi dan Prosedur, VB .NET, VB 6.0