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.

Colocar el icono de la aplicacion en el systray

  • 1 Respuestas
  • 1593 Vistas

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

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5336
  • Actividad:
    23.33%
  • Reputación 30
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Julio 26, 2010, 12:04:01 pm »
En un modulo:

Código: Visual Basic
  1. Public nid As NOTIFYICONDATA
  2. Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
  3. Public Const WM_CHAR = &H102
  4. Public Const WM_SETTEXT = &HC
  5. Public Const WM_USER = &H400
  6. Public Const WM_KEYDOWN = &H100
  7. Public Const WM_KEYUP = &H101
  8. Public Const WM_LBUTTONDOWN = &H201
  9. Public Const WM_CLOSE = &H10
  10. Public Const WM_COMMAND = &H111
  11. Public Const WM_CLEAR = &H303
  12. Public Const WM_DESTROY = &H2
  13. Public Const WM_GETTEXT = &HD
  14. Public Const WM_GETTEXTLENGTH = &HE
  15. Public Type NOTIFYICONDATA
  16. cbSize As Long
  17. hwnd As Long
  18. uId As Long
  19. uFlags As Long
  20. uCallBackMessage As Long
  21. hIcon As Long
  22. szTip As String * 64
  23. End Type
  24. Public Const NIM_ADD = &H0
  25. Public Const NIM_MODIFY = &H1
  26. Public Const NIM_DELETE = &H2
  27. Public Const NIF_MESSAGE = &H1
  28. Public Const NIF_ICON = &H2
  29. Public Const NIF_TIP = &H4
  30. Public Const WM_MOUSEMOVE = &H200
  31. Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
  32.  
  33. Sub InitializeTrayIcon()
  34. With nid
  35. .cbSize = Len(nid)
  36. .hwnd = frmMain.hwnd 'nombre del form que estara minimizado
  37. .uId = vbNull
  38. .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
  39. .uCallBackMessage = WM_MOUSEMOVE
  40. .hIcon = frmMain.Icon 'nombre del formulario que contiene el icono
  41. End With
  42. Shell_NotifyIcon NIM_ADD, nid
  43. End Sub

Y en el Form:

Código: Visual Basic
  1. Private Sub Form_Load()
  2. InitializeTrayIcon
  3. End Sub
  4.  
  5. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  6. Dim Result As Long
  7. Dim msg As Long
  8. If Me.ScaleMode = vbPixels Then
  9. msg = X
  10. Else
  11. msg = X / Screen.TwipsPerPixelX
  12. End If
  13. Select Case msg
  14. Case 517
  15. Me.PopupMenu MNU
  16. Case 514
  17. Result = SetForegroundWindow(Me.hwnd)
  18. Me.Show
  19. End Select
  20. End Sub
  21.  
  22. Private Sub Form_Terminate()
  23. Shell_NotifyIcon NIM_DELETE, nid
  24. End Sub
  25.  
  26. Private Sub Form_Unload(Cancel As Integer)
  27. Shell_NotifyIcon NIM_DELETE, nid
  28. End Sub
« Última modificación: Mayo 12, 2014, 03:12:10 pm por Expermicid »


Desconectado _katze_

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #1 en: Julio 26, 2010, 12:20:09 pm »
Código: Visual Basic
  1. 'esto va en un modulo.bas
  2. 'lo modifique y lo cree a mi gusto con funciones esta bn pero lo pueden modificar mas si kieren
  3. '_k4tz3_ vb6.0
  4. Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
  5. Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
  6. Public Type NOTIFYICONDATA
  7. cbSize As Long
  8. hwnd As Long
  9. uId As Long
  10. uFlags As Long
  11. uCallBackMessage As Long
  12. hIcon As Long
  13. szTip As String * 128
  14. dwState As Long
  15. dwStateMask As Long
  16. szInfo As String * 256
  17. uTimeout As Long
  18. szInfoTitle As String * 64
  19. dwInfoFlags As Long
  20. End Type
  21. Public Const NIM_ADD = &H0
  22. Public Const NIM_DELETE = &H2
  23. Public Const NIF_MESSAGE = &H1
  24. Public Const NIF_ICON = &H2
  25. Public Const NIF_INFO = &H10
  26. Public Const NIF_TIP = &H4
  27. Public Const WM_MOUSEMOVE = &H200
  28. Public Const WM_LBUTTONDBLCLK = &H203
  29. Public Const WM_LBUTTONDOWN = &H201
  30. Public Const WM_LBUTTONUP = &H202
  31. Public Const WM_RBUTTONDBLCLK = &H206
  32. Public Const WM_RBUTTONDOWN = &H204
  33. Public Const WM_RBUTTONUP = &H205
  34. Public nID As NOTIFYICONDATA
  35. Public Function CierraTray(frm As Form)
  36. With nID
  37. .cbSize = Len(nID)
  38. .hwnd = frm.hwnd
  39. .uId = 1&
  40. End With
  41. Shell_NotifyIcon NIM_DELETE, nID
  42. End Function
  43. Public Function showfrm(frm As Form)
  44.     If frm.WindowState = 1 Then frm.WindowState = 0
  45.     frm.Show
  46.     End Function
  47. Public Function tray(frm As Form, Title As String)
  48. With nID
  49. .cbSize = Len(nID)
  50. .hwnd = frm.hwnd
  51. .uId = vbNull
  52. .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE Or NIF_INFO
  53. .uCallBackMessage = WM_MOUSEMOVE
  54. .hIcon = frm.Icon
  55. .szTip = Title & Chr(0) '& vbNullChar
  56. .dwState = 0
  57. .dwStateMask = 0
  58. .szInfoTitle = "mensaje" & Chr(0)
  59. .szInfo = "mensaje" & vbNullChar
  60. .uTimeout = 1
  61. End With
  62. Shell_NotifyIcon NIM_ADD, nID
  63. End Function
  64.  

y esto va en las declaraciones para llamarlo de vuelta al form con un dos click y pra activar el click derecho en el systray para llamar a un popupmenu o lo  quieran o un o dos click.
Código: Visual Basic
  1. Private Declare Function ReleaseCapture Lib "user32.dll" () As Long
  2. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  3. Private Const WM_NCLBUTTONDOWN      As Long = &HA1
  4. Private Const HTCAPTION             As Long = 2
  5.  
  6. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  7.    
  8.     ReleaseCapture
  9.     SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
  10.  
  11.    Dim lResult As Long
  12.     Dim lMsg As Long
  13.  
  14.     If Me.ScaleMode = vbPixels Then
  15.         lMsg = x
  16.     Else
  17.         lMsg = x / Screen.TwipsPerPixelX
  18.     End If
  19.  
  20.     Select Case lMsg
  21.         Case WM_RBUTTONUP
  22.             lResult = SetForegroundWindow(Me.hwnd)
  23.            Me.PopupMenu mmenutray 'click derecho en el systray llama al popumenu dado en parametro !
  24.        Case WM_LBUTTONDBLCLK
  25.             If Me.Visible = False Then
  26.                 Call showfrm(Me) ' llamamos al formulario llamando a showfrm!
  27.                          
  28.             End If
  29.     End Select
  30.     End Sub
  31. 'para llamar al systray cuando se minimized
  32. Private Sub Form_Resize()
  33.  If Me.WindowState = vbMinimized Then
  34.            Call tray(Me, TempTitle)
  35.             Me.Hide
  36.         End If
  37. End Sub
  38.  
  39. Private Sub Form_Unload(Cancel As Integer)
  40. Call CierraTray(Me)
  41. end sub
  42. 'mas claro que el agua
  43.  
  44.  
« Última modificación: Mayo 12, 2014, 03:12:35 pm por Expermicid »

 

¿Te gustó el post? COMPARTILO!



Aplicacion cliente servidor control Winsock (MSWINSCK.OCX)

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1178
Último mensaje Julio 26, 2010, 12:20:55 pm
por ANTRAX
Saber desde que directorio se ejecuta mi aplicación

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1359
Último mensaje Julio 26, 2010, 10:22:17 am
por ANTRAX
Reiniciar la aplicacion ante un error (by leandro A.)

Iniciado por alexander1712

Respuestas: 0
Vistas: 1353
Último mensaje Enero 26, 2013, 03:02:22 am
por alexander1712
Cómo colocar una imagen de fondo ajustada a la ventana en un MDI

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1505
Último mensaje Julio 26, 2010, 04:17:32 pm
por ANTRAX
Minimizar en el Systray con Menu

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1360
Último mensaje Julio 26, 2010, 12:24:51 pm
por ANTRAX