hugo_brito
27-07-2007, 15:31
:arrow:gostava de saber como fazer para quando se fecha um programa ou se clica num "command" ele va para o system try e quando se clicar duas vezes ele abre de novo????
:003:
:003:
|
View Full Version : Para quem entende de Visual Basic 6 hugo_brito 27-07-2007, 15:31 :arrow:gostava de saber como fazer para quando se fecha um programa ou se clica num "command" ele va para o system try e quando se clicar duas vezes ele abre de novo???? :003: RPortela 27-07-2007, 16:46 Boas, Para isso poderás usar módulos ou ocx. Em ambos os casos, basta ires ao google e pesquisar por "systray vb6", poderás também procurar no vbmania, e noutros sites de armazenamento de código. Nobau 27-07-2007, 17:14 Tens aqui um exemplo que funciona na perfeição 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 Cumprimentos, hugo_brito 28-07-2007, 14:42 este código ja tinha visto mas k codigo escrevo quando diz o k fazer quando se clica duas vezes no icon e outra se minimizares o programa ele fica minimizado e tanbem no system try eu keria so no system try mesmo assim brg pelas respostam Kayvlim 31-07-2007, 03:02 Sem certezas ... na mesma função onde o colocas no tray, acrescenta um Me.Hide. Quando, pelo tray, chamas o programa, acrescenta um Me.Show. |