Jumat, 19 Oktober 2012

Mengambil Direktori Sistem Windows



Serba ragamnya nama dan lokasi direktori sistem di bawah direktori Windows (yang namanya juga bisa berbeda; ada yang "Windows"; ada juga yang "WinNT") di setiap jenis sistem operasi Windows, membuat programmer sering kebingungan untuk memastikan lokasi direktori sistem di suatu sistem operasi Windows itu ada di mana. Termasuk nama untuk direktori sistem itu sendiri; ada sistem operasi yang menggunakan nama "System", tapi ada juga yang menggunakan nama "System32" Belum lagi jika misalnya sistem operasi Windows tidak diinstall di C: atau tidak di C:\Windows (memang bisa gitu?), maka bagaimana untuk memastikan lokasi direktori system itu sebenarnya ada di mana? Tapi tidak perlu khawatir berlebihan, karena source code berikut akan mengatasi semua kesulitan itu.
Code::
'Deskripsi: Menampilkan direktori system dalam sistem operasi Windows
'Persiapan: 1. Buat satu project exe standar dengan satu form
'               2. Tambahkan satu Commandbutton ke atas form
'               3. Copy-kan code berikut ke editor form yang bertalian
'---------------------------------------------------------------------
 
Private Declare Function GetSystemDirectory Lib "kernel32.dll" _
                Alias "GetSystemDirectoryA" _
                (ByVal lpBuffer As String, _
                ByVal nSize As Long) As Long
 
Private Sub Command1_Click()
  Dim windir As String 'deklarasi variabel utk direktori
  Dim slength As Long  'deklarasi variabel utk panjang
  windir = Space(255)  'sediakan buffer untuk menerima string
  'ambil nilai dari function API GetSystemDirectory
  slength = GetSystemDirectory(windir, 255)
  windir = Left(windir, slength)  'extract string dari buffer
  'Tampilkan:
  MsgBox "Direktori sistem ada di: " & windir, vbInformation
End Sub

Mengganti Nama/Organisasi Pemilik Windows



Berikut ini cara mengganti nama pemilik Windows yang terdaftar di komputer Anda beserta nama perusahaan atau organisasinya.
Code::
'Deskripsi: Mengganti nama pemilik Windows yang terdaftar di komputer Anda
'           beserta perusahaan/organisasinya.
'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 1 Module, 2 Textbox, 
'              dan 1 Commandbutton
'           2. Copy-kan coding berikut ke dalam editor form & module ybt.
'----------------------------------------------------------------------------
 
'Masukkan nama pemilik Windows yang baru di Text1, masukkan nama perusahaan 
'pemilik tersebut di Text2, lalu klik tombol Command1. Jika Anda mengosongkan
'kedua texbox tsb lalu mengklik Command1, maka tidak ada perubahan yg terjadi.
'Lihat perubahannya dari menu Start | Settings | Control Panel | System 
'(tab General), atau klik kanan icon "My Computer" di desktop lalu pilih 
'"Properties".
 
'Coding ini di Module...
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
  (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
  (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As _
  Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Declare Function RegFlushKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
 
Public Const HKEY_LOCAL_MACHINE = &H80000002
'--- Akhir coding di Module...
 
'--- Coding ini di Form...
Sub WriteRegistry(ByVal Group As Long, ByVal Section As String, ByVal Key As _
    String, NewVal As String)
  Dim lResult As Long, lKeyValue As Long
  Dim InLen As Long
  On Error Resume Next
  lResult = RegOpenKey(Group, Section, lKeyValue)
  InLen = Len(NewVal)
  lResult = RegSetValueEx(lKeyValue, Key, 0&, 1&, NewVal, InLen)
  lResult = RegFlushKey(lKeyValue)
  lResult = RegCloseKey(lKeyValue)
End Sub
 
Private Sub Command1_Click()
  WriteRegistry HKEY_LOCAL_MACHINE, _
  "SOFTWARE\Microsoft\Windows\CurrentVersion", "RegisteredOwner", Text1
  WriteRegistry HKEY_LOCAL_MACHINE, _
  "SOFTWARE\Microsoft\Windows\CurrentVersion", "RegisteredOrganization", Text2
  MsgBox "Registered Name = " & Text1.Text & "" & Chr(13) & _
         "Registered Organization = " & Text2.Text & "", vbInformation, _
         "Berhasil Diganti!"
End Sub
'--- Akhir coding di Form...

Menyimpan dan Mengambil Data ke dan dari Registry



Pada contoh berikut Anda dapat mengetahui cara menyimpan dan mengambil setting program yang disimpan di Registry.
Code::
'Deskripsi: Menyimpan dan mengambil data ke dan dari Registry dengan
'           memakai fungsi SaveSetting, GetSetting, dan GetAllSettings.
'           Khusus GetAllSettings, merupakan fungsi untuk mengambil
'           semua data di "bawah" suatu Section tertentu, jadi tanpa
'           harus mengambil satu per satu item/setting dengan GetSetting.
'Persiapan: 1. Buat 1 Project baru dengan 1 Form.
'           2. Tambahkan 3 TextBox, masing-masing beri nama dengan
'              Text1, Text2, dan Text3.
'           3. Tambahkan 1 ComboBox, beri nama dengan Combo1.
'           4. Tambahkan 2 CheckBox, masing-masing beri nama dengan
'              Check1 dan Check2.
'           5. Tambahkan 4 OptionButton, masing-masing beri nama dengan
'              Option1(0), Option1(1), Option2, dan Option3.
'           6. Tambahkan 1 ListBox, beri nama dengan List1.
'           7. Tambahkan 4 Commandbutton, masing-masing beri nama dengan
'              - cmdSaveSetting
'              - cmdGetSetting
'              - cmdDeleteSetting
'              - cmdSaveQuit
'           8. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
 
'Penggunaan setiap fungsi:
 
'SaveSetting(AppName As String, _
             Section As String, _
             Setting As String)
 
'GetSetting(AppName As String, _
            Section As String, _
            Key As String, _
            Default As String)
 
'GetAllSettings(AppName As String, _
                Section As String)
 
'Untuk melihat hasil dari contoh ini, jalankan Registry dari menu 
'Start->Run ketikkan: Regedit  lalu tekan Enter. Buka folder/direktori 
'di explorer Regedit yaitu:
'HKEY_CURRENT_USER\Software\VB and VBA Program Settings\prjRegedit
'kemudian periksa subfolder "Form" dan "TestRegedit".
'Khusus untuk Section "TestRegedit", seluruh nilai yang diambil dapat
'Anda lihat di List1.
'--------------------------------------------------------------------------
 
Private Sub cmdDeleteSetting_Click()
  On Error Resume Next
   DeleteSetting App.Title, "TestRegedit"
   MsgBox "Berhasil dihapus!", vbInformation, "Hapus OK"
End Sub
 
Private Sub cmdGetSetting_Click()
   Form_Load
End Sub
 
Private Sub cmdSaveQuit_Click()
   SimpanForm1
   SimpanLetakForm
   End
End Sub
 
Private Sub cmdSaveSetting_Click()
   SimpanForm1
   SimpanLetakForm
   MsgBox "Berhasil disimpan!", vbInformation, "Simpan OK"
End Sub
 
Private Sub Form_Load()
Dim AtasForm, KiriForm As Integer
  On Error Resume Next
   AtasForm = Screen.Height / 2 - Me.Height / 2
   KiriForm = Screen.Width / 2 - Me.Width / 2
   Me.Left = GetSetting(App.Title, "Form", "Kiri", KiriForm)
   Me.Top = GetSetting(App.Title, "Form", "Atas", AtasForm)
   Me.Width = GetSetting(App.Title, "Form", "Lebar", 5000)
   Me.Height = GetSetting(App.Title, "Form", "Tinggi", 5000)
    
   Dim avntSettings As Variant
   Dim intX As Integer
   avntSettings = GetAllSettings(App.Title, "TestRegedit")
   List1.Clear
   For intX = 0 To UBound(avntSettings, 1)
      List1.AddItem avntSettings(intX, 1)
   Next intX
    
   Text1 = List1.List(0)
   Text2 = List1.List(1)
   Text3 = List1.List(2)
   Check1 = List1.List(3)
   Check2 = List1.List(4)
   Option1(0) = List1.List(5)
   Option1(1) = List1.List(6)
   Option2 = List1.List(7)
   Option3 = List1.List(8)
   
   Combo1.List(0) = GetSetting(App.Title, "TestRegedit", "Combo1(0)", "")
   Combo1.List(1) = GetSetting(App.Title, "TestRegedit", "Combo1(1)", "")
   Combo1.List(2) = GetSetting(App.Title, "TestRegedit", "Combo1(2)", "")
   Combo1.Text = Text3.Text
End Sub
 
Sub SimpanForm1()
 
   SaveSetting App.Title, "TestRegedit", "Text1", Text1
   SaveSetting App.Title, "TestRegedit", "Text2", Text2
   SaveSetting App.Title, "TestRegedit", "Text3", Combo1.Text
   SaveSetting App.Title, "TestRegedit", "Check1", Check1.Value
   SaveSetting App.Title, "TestRegedit", "Check2", Check2.Value
   SaveSetting App.Title, "TestRegedit", "Option1(0)", Option1(0).Value
   SaveSetting App.Title, "TestRegedit", "Option1(1)", Option1(1).Value
   SaveSetting App.Title, "TestRegedit", "Option2", Option2.Value
   SaveSetting App.Title, "TestRegedit", "Option3", Option3.Value
   
   If Combo1.List(0) = "" Then
      SaveSetting App.Title, "TestRegedit", "Combo1(0)", Combo1.Text
   ElseIf Combo1.List(0) = Combo1.Text Or _
          Combo1.List(1) = Combo1.Text Or _
          Combo1.List(2) = Combo1.Text Then
      SaveSetting App.Title, "TestRegedit", "Combo1(0)", Combo1.List(0)
      SaveSetting App.Title, "TestRegedit", "Combo1(1)", Combo1.List(1)
      SaveSetting App.Title, "TestRegedit", "Combo1(2)", Combo1.List(2)
   Else
      SaveSetting App.Title, "TestRegedit", "Combo1(2)", Combo1.List(1)
      SaveSetting App.Title, "TestRegedit", "Combo1(1)", Combo1.List(0)
      SaveSetting App.Title, "TestRegedit", "Combo1(0)", Combo1.Text
   End If
    
End Sub
 
Sub SimpanLetakForm()
  If Me.WindowState <> vbMinimized Then
     SaveSetting App.Title, "Form", "Kiri", Me.Left
     SaveSetting App.Title, "Form", "Atas", Me.Top
     SaveSetting App.Title, "Form", "Lebar", Me.Width
     SaveSetting App.Title, "Form", "Tinggi", Me.Height
  End If
End Sub

Mengetahui Jumlah Memory



Mengetahui jumlah memory di komputer yang Anda gunakan.
Code::
'Deskripsi: Mengetahui utilitas jumlah memori di suatu PC
'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 1 Module, 
'              dan 1 Commandbutton.
'           2. Copy-kan coding berikut ke editor form yang bertalian.
---------------------------------------------------------------------
 
'--- Coding ini di Module...
Public Type MEMORYSTATUS
  dwLength As Long
  dwMemoryLoad As Long
  dwTotalPhys As Long
  dwAvailPhys As Long
  dwTotalPageFile As Long
  dwAvailPageFile As Long
  dwTotalVirtual As Long
  dwAvailVirtual As Long
End Type
Public Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)
'--- Akhir coding di Module...
 
'--- Coding ini di Form...
Private Sub Command1_Click()
Dim MS As MEMORYSTATUS
MS.dwLength = Len(MS)
GlobalMemoryStatus MS
'MS.dwMemoryLoad contains percentage memory used
'MS.dwTotalPhys contains total amount of physical memory in bytes
'MS.dwAvailPhys contains available physical memory
'MS.dwTotalPageFile contains total amount of memory in the page file
'MS.dwAvailPageFile contains available amount of memory in the page file
'MS.dwTotalVirtual contains total amount of virtual memory
'MS.dwAvailVirtual contains available virtual memory
MsgBox "Berikut Informasi Memori di Komputer Anda:" & vbCrLf & _
       "" & vbCrLf & _
       "Memori Fisik Tersedia = " & Format(MS.dwAvailPhys, "#,#") & vbCrLf & _
       "Persentase Memori Digunakan = " & Format(MS.dwMemoryLoad, "#,#") & "%" & vbCrLf & _
       "Total Memori Fisik dalam Bytes = " & Format(MS.dwTotalPhys, "#,#") & vbCrLf & _
       "Total Memori dalam File = " & Format(MS.dwTotalPageFile, "#,#") & vbCrLf & _
       "Total Memori Tersedia di File = " & Format(MS.dwAvailPageFile, "#,#") & vbCrLf & _
       "Total Virtual Memori = " & Format(MS.dwTotalVirtual, "#,#") & vbCrLf & _
       "Total Virtual Memori Tersedia = " & Format(MS.dwAvailVirtual, "#,#"), vbInformation
End Sub
'--- Akhir coding di Form..

Bekerja dengan Control Array



Sebuah control array adalah sekelompok control yang saling membagi nama dan tipe yang sama. Mereka juga membagi event procedures yang sama. Sebuah control array mempunyai sedikitnya satu elemen dan dapat bertambah sebanyak jumlah elemen sesuai dengan sumber daya sistem Anda dan yang diizinkan memory; ukurannya juga tergantung pada seberapa banyak memory dan sumber daya Windows yang dibutuhkan untuk setiap control. Maximum index yang dapat Anda gunakan dalam sebuah control array adalah 32767. Elemen-elemen dari setiap control array mempunyai setting property yang sama. Penggunaan control arrays umumnya untuk control Menu dan pengelompokan optionbutton.

Catatan: Visual Basic memiliki kemampuan untuk menambahkan secara dinamis control-control yang tidak saling memiliki hubungan (unreferenced) ke dalam Controls collection pada saat "run-time". Topik ini merefer hanya kepada control yang saling memiliki hubungan (referenced) dan ditambahkan pada saat "design-time" dengan meng-"cut" dan "paste" sebuah control ke dalam sebuah form. Untuk informasi lebih lanjut mengenai cara menambahkan control-control pada saat "run-time", lihat referensi ke topik "Add Method (Controls Collection)" dan "Add Method (Licenses Collection)."

Mengapa Menggunakan Control Arrays?
Menambahkan control-control dengan control arrays menggunakan lebih sedikit sumber daya daripada menambahkan banyak control dengan tipe yang sama ke sebuah form pada saat "design-time". Control arrays juga berguna jika Anda ingin beberapa control dapat saling menggunakan coding yang sama. Sebagai contoh, jika tiga optionbuttons dibuat sebagai control array, coding yang sama dieksekusi terlepas optionbutton yang mana yang sedang diklik.

Jika Anda ingin membuat sebuah control baru pada saat "run-time", control itu haruslah menjadi anggota dari sebuah control array. Dengan sebuah control array, setiap elemen baru mewarisi event procedure dari array tersebut.

Dengan menggunakan mekanisme control array, setiap control yang baru mewarisi event procedures umum yang berlaku pada array. Sebagai contoh, jika form Anda memiliki beberapa textboxes, di mana setiap textbox menerima sebuah nilai tanggal, sebuah control array dapat dibuat sehingga semua textboxes saling berbagi dan menggunakan coding validasi yang sama.

Sumber: MSDN Library - Januari 2000 -> Working With Control Array.
 

© 2011 e - Tutorial | by Moeh Fitrah