Minimizar Um Programa Para O System Tray

laairoy
em C# e Visual Basic

laairoy

XDeveloper
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/10/05Posts: 65Char no Tibia: Tisoh

Num Módulo:

 

Public Declare Function Shell_NotifyIcon Lib _
      "shell32.dll" Alias "Shell_NotifyIconA" _
      (ByVal dwMessage As Long, lpData As _
      NOTIFYICONDATA) 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 * 64
End Type

Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONDBLCLK = &H206

Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIM_MODIFY = &H1
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4

Public Enum Actions
 TrayAdd = &H0
 TrayModify = &H1
 TrayDelete = &H2
End Enum

Public Sub SysTray(Action As Actions, Hwnd As _
      Long, ToolTip As String, Icon As _
      StdPicture)
 Dim STray As NOTIFYICONDATA
 STray.uID = vbNull
 STray.uCallbackMessage = &H200
 STray.Hwnd = Hwnd
 STray.hIcon = Icon
 STray.szTip = ToolTip & vbNullChar
 STray.uFlags = NIF_MESSAGE Or NIF_ICON Or _
                NIF_TIP
 STray.cbSize = Len(STray)
 Select Case Action
   Case NIM_ADD
     Call Shell_NotifyIcon(NIM_ADD, STray)
   Case NIM_MODIFY
     Call Shell_NotifyIcon(NIM_MODIFY, STray)
   Case NIM_DELETE
     Call Shell_NotifyIcon(NIM_DELETE, STray)
 End Select
End Sub

 

 

No Form, coloque o seguinte código:

 

Private Sub Form_Resize()
 If Me.WindowState = 1 Then
   Call SysTray(TrayAdd, Me.Hwnd, Me.Caption, _
        Me.Icon)
 End If
End Sub

Private Sub Form_MouseMove(Button As Integer, _
       Shift As Integer, X As Single, Y As _
       Single)
 Dim Msg As Long
 If (Button + Shift + Y) = 0 Then
   Msg = X / Screen.TwipsPerPixelX
   Select Case Msg
     Case WM_LBUTTONDOWN
       'Coloque aqui a rotina a ser executada
       'quando ocorrer um clique com o botão
       'esquerdo no icon do System Tray.
     Case WM_LBUTTONDBLCLK
       'Coloque aqui a rotina a ser executada
       'quando ocorrer um duplo clique com o
       'botão esquerdo no icon do System Tray.
       'Neste exemplo, a janela será restaurada
       'e o ícone retirado so System Tray.
       Me.WindowState = 0
       Call SysTray(TrayDelete, Me.Hwnd, _
            Me.Caption, Me.Icon)
       Me.SetFocus
     Case WM_RBUTTONDOWN
       'Coloque aqui a rotina a ser executada
       'quando ocorrer um clique com o botão
       'direito do rato no icon do System Tray.
     Case WM_RBUTTONDBLCLK
       'Coloque aqui a rotina a ser executada
       'quando ocorrer um duplo clique com o
       'botão direito do rato no icon do System
       'Tray.
   End Select
 End If
'Se você precisar colocar algum outro código neste
'evento, pode coloca-lo aqui sem maiores problemas.
End Sub

 

 

 

PRONTO!!!!! Agora é só executar!!!

 

Creditos: 3D Man®

Retired...(Saudades daqueles bons tempos)

laaiik8.png

----------------------------------------------------------------------------------------

barspiritgj1es3.gif

Eigenlieb

Ex-Diretor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 11/01/06Posts: 300Char no Tibia: Lippisch

E você saberia dizer como ele é ativado?

 

Abraços

Sou um ótimo avaliador de caráter! O meu, por exemplo, é péssimo.

laairoy

XDeveloper
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/10/05Posts: 65Char no Tibia: Tisoh

coloca esse codigo em um botão:

 

If Me.WindowState = 1 Then
Call SysTray(TrayAdd, Me.Hwnd, Me.Caption, _
Me.Icon)
End If

 

 

nesse caso o form vai para o system tray, mais a janela nao some...

só usa o comando:

 

me.show

 

ao clicar no botão

Retired...(Saudades daqueles bons tempos)

laaiik8.png

----------------------------------------------------------------------------------------

barspiritgj1es3.gif

RichardM

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/10/07Posts: 43Char no Tibia: Nenhum no Momento

LEgal bem criativo!

Sprit

Serviços Prestados ao XTibia
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 29/12/06Posts: 111Char no Tibia: King Unagi

bem criativo, mas isso foi copiado....

e não foi nem esse 3D man que fez ahuahuah tem esse exemplo no help do VB 6

 

CD 2 do MSDN ^^

 

mas é bem funcional....

falto uns comments no codigo pra explicar legal pra que serve cada coisa, e o que se pode fazer com o monte de constante de eventos!! ^^

 

mas a dica vlww ^^

isso que importa!


"Se tem jeito fazemos, se não tem jeito, inventamos um jeito!! (By Drak)"