Sabtu, 28 Mei 2011

Menampilkan Data di ListView

Kontrol ListView sering digunakan sebagai alternatif selain kontrol DataGrid, bilamana suatu data ingin ditampilkan secara readonly serta terlihat lebih simpel dan rapi.
Download source code-nya disini.

Label: , , , ,

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 , Me
    sehingga ketika Form1 ditutup (Form2 belum ditutup), maka nilai ini dideteksi ketika Form2 ditutup.
Contoh, ketikkan kode berikut di bagian 'Form_QueryUnload' dari Form.
If UnloadMode = vbAppTaskManager Then
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()
Contoh, ketikkan kode berikut di bagian 'Form1_FormClosed' dari Form.
If e.CloseReason = CloseReason.TaskManagerClosing Then
MsgBox("Form ditutup melalui TaskManager !")
End If

Label: , , ,

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 :
BentukFontPasswordChar
Titik besarWebdings=
ListrikWebdings~
ToolsWebdings@
TengkorakWingdingsN
MenulisWingdings?
SmileyWingdingsJ
JempolWingdings 2<
ContrengWingdings 2P

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.

Label: , , ,

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")


[ 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.

Label: , , ,

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 :
    Randomize
    a = Rnd() * 4
    nilai a bisa bernilai antara 0 sampai dengan 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 :
    Randomize
    a = CBool(CInt(Rnd() * 1))
    nilai a bisa bernilai True atau False

  • 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.0
    NamaFungsi
    Sina = Sin(n * Angle)
    Cosina = Cos(n * Angle)
    Tangena = Tan(n * Angle)
    Inv. Sina = Atn(n / Sqr(-n * n + 1)) / Angle
    Inv. Cosina = (Atn(-n / Sqr(-n * n + 1)) + 2 * Atn(1)) / Angle
    Inv. Tangena = 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 NET
    NamaFungsi
    Sina = Sin(n * Angle)
    Cosina = Cos(n * Angle)
    Tangena = Tan(n * Angle)
    Inv. Sina = Asin(n) / Angle
    Inv. Cosina = Acos(n) / Angle
    Inv. Tangena = 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: , , ,

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

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 penggunaan
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

Label: , ,

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.
OperatorKeteranganContohHasil
+Penambahan5 + 27
-Pengurangan5 - 23
*Perkalian5 * 210
/Pembagian5 / 22,5
\Pembagian dgn hasil bulat5 \ 22
ModSisa pembagian5 Mod 21
^Pemangkatan5 ^ 225
&Penggabungan string"Aku " & "Dia""Aku Dia"

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.
OperatorKeterangan
=Sama dengan
<>Tidak sama dengan
>Lebih besar
<Lebih kecil
>=Lebih besar atau sama dengan
<=Lebih kecil atau sama dengan
LikeKriteria

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.
  1. 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))

  2. 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))

  3. 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))
Selain ketiga operator diatas, terdapat juga operator Not yang digunakan untuk membalikkan nilai. Jika nilainya True akan menjadi False, dan bila nilainya False akan menjadi True
h = Not ((2 > 2) And (3 < 2))       'menghasilkan True
h = Not ((2 = 2) And (3 > 2))      'menghasilkan False

Label: , , ,

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 :
App.TaskVisible = False
Me.Hide
Lalu di bagian 'Timer1_Timer' ketikkan :
l = GetWindow(GetDesktopWindow(), 5)
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 :
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

Label: , , ,

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

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)

Di bagian 'Form_Unload' ketikkan :
UnregisterHotKey Me.hwnd, idPerintah1
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

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

Di bagian 'Form1_FormClosed' ketikkan :
UnregisterHotKey(Me.Handle.ToInt32, idPerintah1)
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: , ,

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

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




[ 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

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

Label: , , ,