Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Minimizar en el Systray con Menu

  • 0 Respuestas
  • 1958 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5487
  • Actividad:
    26.67%
  • Reputación 35
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Julio 26, 2010, 12:24:51 pm »
este es un modulo que nos permite minimizar nuestra aplicación al lado de la hora y nos brinda la posibilidad de ponerle un menu. este codigo me lo baje de una web yo solo le ise algunos arreglos para que el codigo estubiera mas organizado y fuera más facil de usar. todo el codigo estaba en el form y yo lo lleve a un modulo. y ise las funsiones. No pongo el nombre del autor original porque no estaba en los codigos junto a los comentarios .

Código: Visual Basic
  1. ' *******************************************
  2. ' * Módulo YCCSystray *
  3. ' * Año 2005 *
  4. ' * Modificado por: Yosvanis Cruz *
  5. ' *******************************************
  6.  
  7. '------------------------------------------------------------
  8. ' Pequeño Manual
  9. '------------------------------------------------------------
  10. '*Este pequeño manual es para usar correctamente este Módulo*
  11. '
  12. ' - Este Módulo cuenta con dos funciones-
  13. ' (YCCSysTrayMinimizar y YCCSystrayMenu)
  14. '
  15. ' Como usar correctamente YCCSysTrayMinimizar:
  16. '
  17. ' Antes que todo esta función es la que ase que nuestra aplicación
  18. ' aparesca en el Systray de Windows(al lado de la Hora del sistema)
  19. ' Datos que debe entrar
  20. '.FORM (Aqui debe entrar el nombre del Form donde usa la función)
  21. '.ToolTipText (Aqui se entra el texto que se mostrara cuando se
  22. ' situe el cursor sobre el icono de nuestro systray)
  23. '.ShowInTaskbar ( si es true cuando se minimize la aplicación se
  24. ' mostrara en el Taskbar(Barra de tareas) si es
  25. ' False no se mostrara.
  26. '
  27. ' *******Donde usar esta Función*********
  28. ' En los eventos Load y resize del Form.
  29. ' En el evento Load: si quiere que siempre nuestra aplicación
  30. ' aparesca en el systray. en este Evento coloque ShowInTaskbar
  31. ' con valor True de lo contrario el Form iniciara Invisible
  32. ' si desea que el form nunca se muestre en el Taskbar
  33. ' (Barra de tareas) en las propiedades del Form ponga
  34. ' ShowInTaskbar en False.
  35. '
  36. ' En el evento Resize: si quiere que aparesca apartir
  37. ' de la primera vez que se minimize nuestra aplicación aquí
  38. ' si puede colocar ShowInTaskbar con valor False.
  39. '
  40. ' Como usar correctamente YCCSystrayMenu:
  41. ' Esta función es la que ase que se le pueda asignar menu al
  42. ' systray de nuestra aplicación Datos que debe entrar
  43. ' -- Datos que debe entrar
  44. '.FORM (Aqui debe entrar el nombre del Form donde usa la función)
  45. '.x (Solo tiene que poner una x)
  46. '.Menu (colocar el nombre de un menu que exista en un form
  47. ' de nuestra aplicación)
  48. ' si quiere que el menu solo aparesca en el systray ponga su propiedad Visible en False.
  49. ' OjO esta funcion siempre debe ir en el Evento MouseMove del Form
  50. ' Para mas ayuda escribirle a Yosvanis Cruz a
  51. ' --------------------------------------------------------------
  52. Option Explicit
  53. Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _
  54. (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
  55. Private Declare Function SetForegroundWindow Lib "user32" _
  56. (ByVal hwnd As Long) As Long
  57. Private Type NOTIFYICONDATA
  58. cbSize As Long '//size of this UDT
  59. hwnd As Long '//handle of the app
  60. uId As Long '//unused (set to vbNull)
  61. uflags As Long '//Flags needed for actions
  62. uCallBackMessage As Long '//WM we are going to subclass
  63. hIcon As Long '//Icon we're going to use for the systray
  64. szTip As String * 64 '//ToolTip for the mouse_over of the icon.
  65. End Type
  66. Private Const NIM_ADD = &H0 '//Flag : "ALL NEW nid"
  67. Private Const NIM_MODIFY = &H1 '//Flag : "ONLY MODIFYING nid"
  68. Private Const NIM_DELETE = &H2 '//Flag : "DELETE THE CURRENT nid"
  69. Private Const NIF_MESSAGE = &H1 '//Flag : "Message in nid is valid"
  70. Private Const NIF_ICON = &H2 '//Flag : "Icon in nid is valid"
  71. Private Const NIF_TIP = &H4 '//Flag : "Tip in nid is valid"
  72. Private Const WM_MOUSEMOVE = &H200 '//This is our CallBack Message
  73. Private Const WM_LBUTTONDOWN = &H201 '//LButton down
  74. Private Const WM_LBUTTONUP = &H202 '//LButton up
  75. Private Const WM_LBUTTONDBLCLK = &H203 '//LDouble-click
  76. Private Const WM_RBUTTONDOWN = &H204 '//RButton down
  77. Private Const WM_RBUTTONUP = &H205 '//RButton up
  78. Private Const WM_RBUTTONDBLCLK = &H206 '//RDouble-click
  79. Private nid As NOTIFYICONDATA
  80. Dim VarHor As String
  81. Dim Varmin As String
  82. Public Function YCCSysTrayMinimizar(Form As Form, ToolTipText As String, ShowInTaskbar As Boolean)
  83. If ShowInTaskbar = False Then Form.Visible = False
  84. With nid
  85. .cbSize = Len(nid)
  86. .hwnd = Form.hwnd
  87. .uId = vbNull
  88. .uflags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
  89. .uCallBackMessage = WM_MOUSEMOVE
  90. .hIcon = Form.Icon
  91. .szTip = ToolTipText & vbNullChar
  92. End With
  93. Shell_NotifyIcon NIM_ADD, nid
  94. End Function
  95.  
  96. Public Function YCCSystrayMenu(Form As Form, x As Single, Menu As Menu)
  97. '//////////////////////////////////////////////////////////////////
  98. '//Purpose: This is the callback function of icon in the
  99. '// system tray. This is where will will process
  100. '// what the application will do when Mouse Input
  101. '// is given to the icon.
  102. '//
  103. '//Inputs: What Button was clicked (this is button & shift),
  104. '// also, the X & Y coordinates of the mouse.
  105. '//////////////////////////////////////////////////////////////////
  106.  
  107. Dim msg As Long '//The callback value
  108.  
  109. '//The value of X will vary depending
  110. '//upon the ScaleMode setting. Here
  111. '//we are using that fact to determine
  112. '//what the value of 'msg' should really be
  113. If (Form.ScaleMode = vbPixels) Then
  114. msg = x
  115. Else
  116. msg = x / Screen.TwipsPerPixelX
  117. End If
  118.  
  119. Select Case msg
  120. Case WM_LBUTTONDBLCLK '515 restore form window
  121. Form.WindowState = vbNormal
  122. Call SetForegroundWindow(Form.hwnd)
  123. Form.Show
  124.  
  125. Case WM_RBUTTONUP '517 display popup menu
  126. Call SetForegroundWindow(Form.hwnd)
  127. Form.PopupMenu Menu
  128.  
  129. Case WM_LBUTTONUP '514 restore form window
  130. '//commonly an application on the
  131. '//systray will do nothing on a
  132. '//single mouse_click, so nothing
  133. End Select
  134.  
  135. '//small note: I just learned that when using a Select Case
  136. '//structure you always want to place the most commonly anticipated
  137. '//action highest. Saves CPU cycles becuase of less evaluations.
  138. End Function
  139. ' ************************************************** *************
« Última modificación: Mayo 12, 2014, 03:13:57 pm por Expermicid »


 

¿Te gustó el post? COMPARTILO!



Colocar el icono de la aplicacion en el systray

Iniciado por ANTRAX

Respuestas: 1
Vistas: 2454
Último mensaje Julio 26, 2010, 12:20:09 pm
por _katze_