UGN Security
Posted By: Mornse Systray - 05/07/02 03:51 AM
How can I make my program not visible, but minimized on the systray. And then when u click on it on the systray it opens up, but when you minimize it goes back to the systray? Is this possible (i'm sure it must be), and is it extremely hard?
Posted By: SilentRage Re: Systray - 05/07/02 01:04 PM
Well, I'll assume that your question concerns how to get it to trigger when minimizing - and that you already know how to mess with the tray.

Private Sub Form_Resize()
����If Me.WindowState = vbMinimized Then
��������Me.Visible = False
��������'Add TrayIcon Code
����End If
End Sub

#Begin Tray Icon Getting Clicked Code#
����frmMain.Visible = True
����frmMain.WindowState = vbNormal
'Remove TrayIcon Code
Posted By: Mornse Re: Systray - 05/08/02 02:13 AM
OK, sweet, though I have NO idea how to mess with the systray, like adding an icon or whatever, i'll look around for some code.
Posted By: SilentRage Re: Systray - 05/08/02 12:57 PM
If I gave you a class module I made that will make using the tray icon very simple, would you be able to figure out how to use it? One neat advantage is that it supports mouse events like left click and right click and double click and stuff.
Posted By: Mornse Re: Systray - 05/08/02 11:36 PM
I might be able to. I found some code at pscode.com that does it, but I don't understand all the code and I don't like using code I don't understand. Maybe send it to me and i'll try it, but i'm pretty sure I won't even know how to use it, hehe. But if I can't figure it out then maybe I'll just use this other code. Because I know how to use the code (i'm pretty sure), I just don't know what each line does.
Posted By: ninjaneo Re: Systray - 05/15/02 09:55 PM
I have a l33t0 lil function I made so I wouldnt have to do a bunch of **** multiple times...
Heres the API declaration thingys...
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public nid As NOTIFYICONDATA
Public Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
uCallBackMessage As Long
hIcon As Long

Heres the function...

Sub Tray(Form As Form, Systray As Boolean)
On Error Resume Next
Select Case Systray
Case True
Form.mnuTray.Visible = True
Form.Visible = False
With nid
.cbSize = Len(nid)
.hwnd = Form.hwnd
.uId = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
.hIcon = Form.Icon
.szTip = Form.Caption & vbNullChar
End With
Shell_NotifyIcon NIM_ADD, nid
Case False
Form.mnuTray.Visible = False
Form.WindowState = 0
Form.Visible = True
Form.Show
Shell_NotifyIcon NIM_DELETE, nid
End Select
End Sub

Put this in the form your gonna be "Traying"
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Sys As Long
Sys = X / Screen.TwipsPerPixelX
Select Case Sys
Case WM_LBUTTONDOWN:
Me.PopupMenu mnuTray
End Select
End Sub


Heres how to use it...

Tray (me, True) - Sticks the form into the tray
Tray (me, False) - Takes the form out.

When the Tray Icon is clicked on it will show mnuTray where you can have **** like "Show" "Exit" etc.
wink Have fun heh
© UGN Security Forum