Monday, October 17, 2011

Cara Sederhana Mendeteksi Perubahan Resolusi Screen - Trik VB6

Bagaimana kita mengetahui perubahan resolusi screen dengan hanya menggunakan beberapa baris kode saja? Mendeteksi Current OS (operating system yang sedang digunakan), mendeteksi Plug n Play Device (external hardisk, flashdisc, webcam, dll), mengetahui screen client area, perubahan konfigurasi system, mendeteksi perubahan waktu, dan sebagainya?.

Untuk keperluan yang telah dijelaskan di atas, kita bisa menggunakan SysInfo.OCX (Microsoft SysInfo Control 6.0). Sysinfo seakan-akan sesuatu yang mutlak diperlukan dalam membuat sebuah aplikasi yang baik. Mengapa demikian?

Di bawah ini merupakan contoh sederhananya:
Option Explicit 
 
Dim strOldResolution As String 
 
Private Sub Form_Load() 
    With Timer1 
        .Enabled = False 
         .Interval = 100 
    End With 
    strOldResolution = "Resolution: " & Screen.Width / Screen.TwipsPerPixelX & _ 
    " x " & Screen.Height / Screen.TwipsPerPixelY 
    Me.Caption = strOldResolution 
    Text1.Text = strOldResolution & vbCrLf 
End Sub 
 
Private Sub SysInfo1_DisplayChanged() 
    Timer1.Enabled = True 'delay time 
End Sub 
 
Private Sub Timer1_Timer() 
    Dim strText As String 'buffer variable 
    strText = Text1.Text 
    strText = strText & "Resolusi berubah menjadi: " & Screen.Width / Screen.TwipsPerPixelX & _ 
    " x " & Screen.Height / Screen.TwipsPerPixelY & vbCrLf 
    Text1.Text = strText 
    Timer1.Enabled = False 
End Sub 

Dan tentu saja Anda bisa membuat banyak modifikasi/variasi untuk disesuaikan dengan kebutuhan, misalnya seperti kode di bawah ini (kode yang berasal dari posting sebelumnya):
Option Explicit 
 
Private Sub Form_Resize() 
    On Error Resume Next 
    With Form1 
        .Left = 0 
        .Top = 0 
        .Height = (Screen.Height * 0.5) 
        .Width = (Screen.Width * 0.5) 
    End With 
    With Command1 
        .Left = (Me.ScaleWidth *  0.68) 
        .Top = (Me.ScaleHeight * 0.78) 
        .Width = (Me.ScaleWidth * 0.2) 
        .Height = (Me.ScaleHeight * 0.1) 
    End With 
End Sub 
 
Private Sub SysInfo1_DisplayChanged() 
    If chkNonAktif.Value = vbChecked Then Exit Sub 
    Timer1.Enabled = True 
End Sub 
 
Private Sub Timer1_Timer() 
    Form_Resize 
    Timer1.Enabled = False  
End Sub 

Selain Sysinfo.OCX yang dibuat oleh Microsoft, Anda bisa juga menggunakan SysInfo yang dibuat oleh Karl E. Peterson, dan menurut saya ini lebih baik. Terakhir, mengapa SysInfo yang dibuat Karl E. Peterson saya anggap lebih baik?