comment
IRC Chat
play_arrow
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
  • 1415 Vistas

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

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5395
  • Actividad:
    36.67%
  • Reputación 31
  • 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. ' el Mail yosvaniscc@ispca.rimed.cu
  52. ' --------------------------------------------------------------
  53. Option Explicit
  54. Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _
  55. (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
  56. Private Declare Function SetForegroundWindow Lib "user32" _
  57. (ByVal hwnd As Long) As Long
  58. Private Type NOTIFYICONDATA
  59. cbSize As Long '//size of this UDT
  60. hwnd As Long '//handle of the app
  61. uId As Long '//unused (set to vbNull)
  62. uflags As Long '//Flags needed for actions
  63. uCallBackMessage As Long '//WM we are going to subclass
  64. hIcon As Long '//Icon we're going to use for the systray
  65. szTip As String * 64 '//ToolTip for the mouse_over of the icon.
  66. End Type
  67. Private Const NIM_ADD = &H0 '//Flag : "ALL NEW nid"
  68. Private Const NIM_MODIFY = &H1 '//Flag : "ONLY MODIFYING nid"
  69. Private Const NIM_DELETE = &H2 '//Flag : "DELETE THE CURRENT nid"
  70. Private Const NIF_MESSAGE = &H1 '//Flag : "Message in nid is valid"
  71. Private Const NIF_ICON = &H2 '//Flag : "Icon in nid is valid"
  72. Private Const NIF_TIP = &H4 '//Flag : "Tip in nid is valid"
  73. Private Const WM_MOUSEMOVE = &H200 '//This is our CallBack Message
  74. Private Const WM_LBUTTONDOWN = &H201 '//LButton down
  75. Private Const WM_LBUTTONUP = &H202 '//LButton up
  76. Private Const WM_LBUTTONDBLCLK = &H203 '//LDouble-click
  77. Private Const WM_RBUTTONDOWN = &H204 '//RButton down
  78. Private Const WM_RBUTTONUP = &H205 '//RButton up
  79. Private Const WM_RBUTTONDBLCLK = &H206 '//RDouble-click
  80. Private nid As NOTIFYICONDATA
  81. Dim VarHor As String
  82. Dim Varmin As String
  83. Public Function YCCSysTrayMinimizar(Form As Form, ToolTipText As String, ShowInTaskbar As Boolean)
  84. If ShowInTaskbar = False Then Form.Visible = False
  85. With nid
  86. .cbSize = Len(nid)
  87. .hwnd = Form.hwnd
  88. .uId = vbNull
  89. .uflags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
  90. .uCallBackMessage = WM_MOUSEMOVE
  91. .hIcon = Form.Icon
  92. .szTip = ToolTipText & vbNullChar
  93. End With
  94. Shell_NotifyIcon NIM_ADD, nid
  95. End Function
  96.  
  97. Public Function YCCSystrayMenu(Form As Form, x As Single, Menu As Menu)
  98. '//////////////////////////////////////////////////////////////////
  99. '//Purpose: This is the callback function of icon in the
  100. '// system tray. This is where will will process
  101. '// what the application will do when Mouse Input
  102. '// is given to the icon.
  103. '//
  104. '//Inputs: What Button was clicked (this is button & shift),
  105. '// also, the X & Y coordinates of the mouse.
  106. '//////////////////////////////////////////////////////////////////
  107.  
  108. Dim msg As Long '//The callback value
  109.  
  110. '//The value of X will vary depending
  111. '//upon the ScaleMode setting. Here
  112. '//we are using that fact to determine
  113. '//what the value of 'msg' should really be
  114. If (Form.ScaleMode = vbPixels) Then
  115. msg = x
  116. Else
  117. msg = x / Screen.TwipsPerPixelX
  118. End If
  119.  
  120. Select Case msg
  121. Case WM_LBUTTONDBLCLK '515 restore form window
  122. Form.WindowState = vbNormal
  123. Call SetForegroundWindow(Form.hwnd)
  124. Form.Show
  125.  
  126. Case WM_RBUTTONUP '517 display popup menu
  127. Call SetForegroundWindow(Form.hwnd)
  128. Form.PopupMenu Menu
  129.  
  130. Case WM_LBUTTONUP '514 restore form window
  131. '//commonly an application on the
  132. '//systray will do nothing on a
  133. '//single mouse_click, so nothing
  134. End Select
  135.  
  136. '//small note: I just learned that when using a Select Case
  137. '//structure you always want to place the most commonly anticipated
  138. '//action highest. Saves CPU cycles becuase of less evaluations.
  139. End Function
  140. ' ************************************************** *************
« Ú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: 1648
Último mensaje Julio 26, 2010, 12:20:09 pm
por _katze_