Cara Membuat Minimize ke System Tray dengan Kode VB6

System tray merupakan aplikasi yang berjalan namun layout dari aplikasi itu tidak ditampilkan dilayar tetapi disembunyikan di bagian taskbar yang berupa icon kecil sebelah pojok kanan bawah komputer.

Untuk lebih jelasnya mengenai system tray perhatikan pada gambar dibawah ini :

Sytem TRAY


Dari gambar diatas saya menggunakan Visual Basic 6.0 untuk membuat  sytem tray seperti diatas.

Berikut adalah langkah-langkah dalam pembuatan Minimize ke System Tray dengan Kode VB6 :

1. Buka Form VB6 Anda Standar EXE

2. Pada Form1 tambahkan 2 Commandbutton dan desainlah seperti gambar dibawah ini 

Desain Form

3. Kemudian tambahkan 2 buah module di Form dan ketikan kode dibawah ini di Module             masing-masing

Module1:

Sub Main()
SystrayOn Form1, "Service Aplikasi System Tray"
MakeBalloon Form1, "Minimize Ke System Tray VB6", "Informasi", NIIF_INFO
Form1.Hide
End Sub


Module2:

Option Explicit
    Public Declare Function ShellExecute Lib "shell32" 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
    Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    Public Declare Function SetForegroundWindow Lib "User32" (ByVal hwnd As Long) As Long
    Public Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    
        Public Type NOTIFYICONDATA
            cbSize                          As Long
            hwnd                            As Long
            uID                              As Long
            uFlags                          As Long
            uCallbackMessage                As Long
            hIcon                            As Long
            szTip                            As String * 128
            dwState                          As Long
            dwStateMask                      As Long
            szInfo                          As String * 256
            uTimeout                        As Long
            szInfoTitle                      As String * 64
            dwInfoFlags                      As Long
        End Type

    Public blnClick                          As Boolean
    Public vbTray                            As NOTIFYICONDATA

    Public Const SWP_NOMOVE                  As Long = &H2
    Public Const SWP_NOSIZE                  As Long = &H1
    Public Const Flags                      As Long = SWP_NOMOVE Or SWP_NOSIZE
    Public Const WM_RBUTTONUP                As Long = &H205
    Public Const WM_RBUTTONCLK              As Long = &H204
    Public Const WM_LBUTTONCLK              As Long = &H202
    Public Const WM_LBUTTONDBLCLK            As Long = &H203
    Public Const WM_MOUSEMOVE                As Long = &H200
    Public Const NIM_ADD                    As Long = &H0
    Public Const NIM_DELETE                  As Long = &H2
    Public Const NIF_ICON                    As Long = &H2
    Public Const NIF_MESSAGE                As Long = &H1
    Public Const NIM_MODIFY                  As Long = &H1
    Public Const NIF_TIP                    As Long = &H4
    Public Const NIF_INFO                    As Long = &H10
    Public Const NIS_HIDDEN                  As Long = &H1
    Public Const NIS_SHAREDICON              As Long = &H2
    
    Public Enum TypeBallon
        NIIF_NONE = &H0
        NIIF_WARNING = &H2
        NIIF_ERROR = &H3
        NIIF_INFO = &H1
        NIIF_GUID = &H4
    End Enum
    
    Public Const HWND_NOTOPMOST              As Long = -2
    Public Const HWND_TOPMOST                As Long = -1

Public Sub SystrayOn(Form As Form, IconTooltipText As String)

        With vbTray
            .cbSize = Len(vbTray)
            .hwnd = Form.hwnd
            .uID = vbNull
            .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
            .uCallbackMessage = WM_MOUSEMOVE
            .szTip = Trim(IconTooltipText$) & vbNullChar
            .hIcon = Form.Icon
        End With
    
    Call Shell_NotifyIcon(NIM_ADD, vbTray)
    App.TaskVisible = False
    
End Sub

Public Sub SystrayOff(Form As Form)


        With vbTray
            .cbSize = Len(vbTray)
            .hwnd = Form.hwnd
            .uID = vbNull
        End With
    
    Call Shell_NotifyIcon(NIM_DELETE, vbTray)
    
End Sub

Public Sub ChangeToolTip(Form As Form, IconTooltipText As String)
        With vbTray
            .cbSize = Len(vbTray)
            .hwnd = Form.hwnd
            .uID = vbNull
            .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
            .uCallbackMessage = WM_MOUSEMOVE
            .szTip = Trim(IconTooltipText$) & vbNullChar
            .hIcon = Form.Icon
        End With
    
    Call Shell_NotifyIcon(NIM_MODIFY, vbTray)
    
End Sub

Public Sub FormOnTop(Form As Form)
    Call SetWindowPos(Form.hwnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, Flags)
End Sub

Public Sub MakeBalloon(Form As Form, message As String, Title As String, Optional balType As TypeBallon = NIIF_INFO)

    Call RemoveBalloon(Form)

        With vbTray
            .cbSize = Len(vbTray)
            .hwnd = Form.hwnd
            .uID = vbNull
            .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIM_MODIFY 'Or NIF_TIP 'NIF_TIP Or NIF_MESSAGE
            .uCallbackMessage = WM_MOUSEMOVE
            .hIcon = Form.Icon
            .dwState = 0
            .dwStateMask = 0
            .szInfo = message & Chr(0)
            .szInfoTitle = Title & Chr(0)
            .dwInfoFlags = balType
        End With
    
    Call Shell_NotifyIcon(NIM_MODIFY, vbTray)

End Sub

Public Sub RemoveBalloon(frm As Form)

 
        With vbTray
            .cbSize = Len(vbTray)
            .hwnd = frm.hwnd
            .uID = vbNull
            .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIM_MODIFY
            .uCallbackMessage = WM_MOUSEMOVE
            .hIcon = frm.Icon
            .dwState = 0
            .dwStateMask = 0
            .szInfo = Chr(0)
            .szInfoTitle = Chr(0)
            .dwInfoFlags = NIIF_NONE
        End With
    
    Call Shell_NotifyIcon(NIM_MODIFY, vbTray)

End Sub


4. Setelah mengetikan kode di kedua module, sekarang kembali ke form dan pada Form1 ketik kode dibawah ini :

Kode di Form1:

Private Sub Command1_Click()
SystrayOn Form1, "Service"
MakeBalloon Form1, "Service TRAY Aktif", "Informasi", NIIF_INFO
Form1.Hide
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
   If Me.Visible = False Then
PopupMenu Menu
End If
End If
End Sub

Private Sub Keluar_Click()
End
End Sub

Private Sub TampilkanForm_Click()
SystrayOff Form1
Form1.Show
End Sub

5. langkah selanjutnya kita akan membuat Menu PopUp dengan menu Editor dengan menekan Tools >> Menu Editor. Buatlah desain Menu Editor seperti gambar dibawah ini



Desain Menu PopUp


Keteranan:
Menu >>  (Name:Menu) hanya di ceklist Enabled saja
Tampilkan Form >> (Name:TampilkanForm)   di ceklist Enabled dan Visible 
Keluar >>  (Name:Keluar) di ceklist Enabled dan Visible 

6. Setelah membuat menu editor sekarang jalankan project Anda.

Setelah form berhasil dijalankan coba tekan tombol Minimize pada form, maka Form akan disembunyikan ke Taskbar dengan icon tray vb6. Untuk menampilkan Form kembali klik kanan icon tray dan klik Tampilkan Form. Perhatikan Gambar dibawah ini :


Demikian artikel hari ini Cara Membuat Minimize ke System Tray dengan Kode VB6.
Semoga artikel ini bermanfaat buat kita semua,Amin.

Selamat mencoba semoga berhasil

No comments: