Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - eventi della balloon tip sulla traybar
Forum - Visual Basic 6 - eventi della balloon tip sulla traybar

Avatar
binarydigit0101 (Normal User)
Newbie


Messaggi: 5
Iscritto: 01/11/2010

Segnala al moderatore
Postato alle 13:38
Lunedì, 01/11/2010
riesco a mettere l'applicazione nella traybar di windows.
in qualche modo sono riuscito a far apparire le balloon tips (i fumetti) dell'applicazione nella traybar.
come è possibile però sapere quando il balloon raggiunge il timeout e come lo imposto oppure quando l'utente fa un click su questo?
grazie mille! :-)

PM
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 15:59
Martedì, 02/11/2010
Testo quotato

Postato originariamente da binarydigit0101:

riesco a mettere l'applicazione nella traybar di windows.
in qualche modo sono riuscito a far apparire le balloon tips (i fumetti) dell'applicazione nella traybar.
come è possibile però sapere quando il balloon raggiunge il timeout e come lo imposto oppure quando l'utente fa un click su questo?
grazie mille! :-)



Beh... magari se posti il codice che ti ha permesso di fare le cose che hai detto di essere riuscito a fare, qualcuno potrebbe trovare il modo di fare quello che non sei riuscito a fare.

PM
Avatar
binarydigit0101 (Normal User)
Newbie


Messaggi: 5
Iscritto: 01/11/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:07
Martedì, 09/11/2010
Testo quotato

Postato originariamente da gigisoft:

Testo quotato

Postato originariamente da binarydigit0101:

riesco a mettere l'applicazione nella traybar di windows.
in qualche modo sono riuscito a far apparire le balloon tips (i fumetti) dell'applicazione nella traybar.
come è possibile però sapere quando il balloon raggiunge il timeout e come lo imposto oppure quando l'utente fa un click su questo?
grazie mille! :-)



Beh... magari se posti il codice che ti ha permesso di fare le cose che hai detto di essere riuscito a fare, qualcuno potrebbe trovare il modo di fare quello che non sei riuscito a fare.



giusto, chiedo scusa...
... il codice seguente l'ho trovato su un sito-web e permette di posizionare l'applicazione nella traybar e di visualizzare le balloon tip

Codice sorgente - presumibilmente C++

  1. Option Explicit
  2. Private Const APP_SYSTRAY_ID = 999
  3. Private Const NOTIFYICON_VERSION = &H3
  4.  
  5. Private Const NIF_MESSAGE = &H1
  6. Private Const NIF_ICON = &H2
  7. Private Const NIF_TIP = &H4
  8. Private Const NIF_STATE = &H8
  9. Private Const NIF_INFO = &H10
  10.  
  11. Private Const NIM_ADD = &H0
  12. Private Const NIM_MODIFY = &H1
  13. Private Const NIM_DELETE = &H2
  14. Private Const NIM_SETFOCUS = &H3
  15. Private Const NIM_SETVERSION = &H4
  16. Private Const NIM_VERSION = &H5
  17.  
  18. Private Const NIS_HIDDEN = &H1
  19. Private Const NIS_SHAREDICON = &H2
  20.  
  21. icone
  22. Private Const NIIF_NONE = &H0
  23. Private Const NIIF_INFO = &H1
  24. Private Const NIIF_WARNING = &H2
  25. Private Const NIIF_ERROR = &H3
  26. Private Const NIIF_GUID = &H5
  27. Private Const NIIF_ICON_MASK = &HF
  28. Private Const NIIF_NOSOUND = &H10
  29. Private Const WM_USER = &H400
  30. Private Const NIN_BALLOONSHOW = (WM_USER + 2)
  31. Private Const NIN_BALLOONHIDE = (WM_USER + 3)
  32. Private Const NIN_BALLOONTIMEOUT = (WM_USER + 4)
  33. Private Const NIN_BALLOONUSERCLICK = (WM_USER + 5)
  34. Private Type GUID
  35.    Data1 As Long
  36.    Data2 As Integer
  37.    Data3 As Integer
  38.    Data4(7) As Byte
  39. End Type
  40.  
  41. Private Type NOTIFYICONDATA
  42.   cbSize As Long
  43.   hWnd As Long
  44.   uID As Long
  45.   uFlags As Long
  46.   uCallbackMessage As Long
  47.   hIcon As Long
  48.   szTip As String * 128
  49.   dwState As Long
  50.   dwStateMask As Long
  51.   szInfo As String * 256
  52.   uTimeoutAndVersion As Long
  53.   szInfoTitle As String * 64
  54.   dwInfoFlags As Long
  55.   guidItem As GUID
  56. End Type
  57.  
  58. Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
  59.  
  60. Private Sub Form_Unload(Cancel As Integer)
  61.  
  62.    ShellTrayRemove
  63.  
  64. End Sub
  65.  
  66. Private Sub Command1_Click()
  67.  
  68.    Call ShellTrayAdd
  69.    Command2.Enabled = True
  70.  
  71. End Sub
  72.  
  73. Private Sub Command2_Click()
  74.  
  75.    ShellTrayModifyTip GetSelectedOptionIndex()
  76.  
  77. End Sub
  78.  
  79. Private Sub ShellTrayAdd()
  80.  
  81.    Dim nid As NOTIFYICONDATA
  82.  
  83.    With nid
  84.  
  85.       .cbSize = Len(nid)
  86.       .hWnd = Form1.hWnd
  87.       .uID = APP_SYSTRAY_ID
  88.       .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
  89.       .dwState = NIS_SHAREDICON
  90.       .hIcon = Form1.Icon
  91.       .szTip = "Visualizza il Balloon Tip!" & Chr(0)
  92.       .uTimeoutAndVersion = NOTIFYICON_VERSION
  93.  
  94.    End With
  95.  
  96.    Call Shell_NotifyIcon(NIM_ADD, nid)
  97.  
  98.    Call Shell_NotifyIcon(NIM_SETVERSION, nid)
  99.  
  100. End Sub
  101.  
  102. Private Sub ShellTrayRemove()
  103.  
  104.    Dim nid As NOTIFYICONDATA
  105.  
  106.    With nid
  107.       .cbSize = Len(nid)
  108.       .hWnd = Form1.hWnd
  109.       .uID = APP_SYSTRAY_ID
  110.    End With
  111.  
  112.    Call Shell_NotifyIcon(NIM_DELETE, nid)
  113.  
  114. End Sub
  115.  
  116. Private Sub ShellTrayModifyTip(nIconIndex As Long)
  117.  
  118.    Dim nid As NOTIFYICONDATA
  119.  
  120.    With nid
  121.       .cbSize = Len(nid)
  122.       .hWnd = Form1.hWnd
  123.       .uID = APP_SYSTRAY_ID
  124.       .uFlags = NIF_INFO
  125.       .dwInfoFlags = nIconIndex
  126.       .szInfoTitle = "Visualizza il Balloon Tip!" & Chr(0)
  127.       .szInfo = Text1.Text
  128.    End With
  129.  
  130.    Call Shell_NotifyIcon(NIM_MODIFY, nid)
  131.  
  132. End Sub
  133.  
  134. Private Function GetSelectedOptionIndex() As Long
  135.  
  136.    GetSelectedOptionIndex = Option1(0).Value * 0 Or _
  137.                             Option1(1).Value * -1 Or _
  138.                             Option1(2).Value * -2 Or _
  139.                             Option1(3).Value * -3
  140. End Function



Ultima modifica effettuata da binarydigit0101 il 09/11/2010 alle 16:08
PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 19:49
Martedì, 09/11/2010
Allora aggiungi un terzo pulsante... Per capire come eliminare il balloontip bisogna vedere come è stato richiamato... quindi vedo il codice del command 2:

Codice sorgente - presumibilmente Plain Text

  1. ShellTrayModifyTip GetSelectedOptionIndex()



Vedo che richiama la funzione ShellTrayModifyTip e allora mi guardo cosa fa questa funzione...

Codice sorgente - presumibilmente VB.NET

  1. Private Sub ShellTrayModifyTip(nIconIndex As Long)
  2.  
  3.          Dim nid As NOTIFYICONDATA
  4.  
  5.          With nid
  6.  
  7.             .cbSize = Len(nid)
  8.  
  9.             .hWnd = Form1.hWnd
  10.  
  11.             .uID = APP_SYSTRAY_ID
  12.  
  13.             .uFlags = NIF_INFO
  14.  
  15.             .dwInfoFlags = nIconIndex
  16.  
  17.             .szInfoTitle = "Visualizza il Balloon Tip!" & Chr(0)
  18.  
  19.             .szInfo = Text1.Text
  20.  
  21.          End With
  22.  
  23.          Call Shell_NotifyIcon(NIM_MODIFY, nid)
  24.  
  25.       End Sub



Poi ho notato che all'ultima riga richiama Shell_NotifyIcon() che è l'api dandogli in input NIM_MODIFY che è una costante. Già il nome mi insospettisce e mi guardo le dichiarazioni delle costante all'inizio del codice:

Codice sorgente - presumibilmente C++

  1. Option Explicit
  2.  
  3.       Private Const APP_SYSTRAY_ID = 999
  4.    
  5.       Private Const NOTIFYICON_VERSION = &H3
  6.    
  7.      
  8.    
  9.       Private Const NIF_MESSAGE = &H1
  10.    
  11.       Private Const NIF_ICON = &H2
  12.    
  13.       Private Const NIF_TIP = &H4
  14.    
  15.       Private Const NIF_STATE = &H8
  16.    
  17.       Private Const NIF_INFO = &H10
  18.  
  19.        
  20.  
  21.       Private Const NIM_ADD = &H0
  22.  
  23.       Private Const NIM_MODIFY = &H1
  24.  
  25.       Private Const NIM_DELETE = &H2
  26.  
  27.       Private Const NIM_SETFOCUS = &H3
  28.  
  29.       Private Const NIM_SETVERSION = &H4
  30.  
  31.       Private Const NIM_VERSION = &H5
  32.  
  33.        
  34.  
  35.       Private Const NIS_HIDDEN = &H1
  36.  
  37.       Private Const NIS_SHAREDICON = &H2



E guardandole noto:

Codice sorgente - presumibilmente Visual Basic 6

  1. Private Const NIM_DELETE = &H2



Quindi alla fine nel command3 che userò per chiudere il balloon tip inserirò l'API ma con input NIM_DELETE

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command3_Click()
  2. 'codice per chiudere il balloontip
  3. Dim nid As NOTIFYICONDATA
  4.          With nid
  5.             .hWnd = Form1.hWnd
  6.             .uID = APP_SYSTRAY_ID
  7.          End With
  8. Call Shell_NotifyIcon(NIM_DELETE, nid)
  9. End Sub



Questo è stato tutto il mio ragionamento... quando avrai un'altro problema cerca di ragionarci su

PM
Avatar
binarydigit0101 (Normal User)
Newbie


Messaggi: 5
Iscritto: 01/11/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:20
Martedì, 09/11/2010
Testo quotato

Postato originariamente da GrG:

Allora aggiungi un terzo pulsante... Per capire come eliminare il balloontip bisogna vedere come è stato richiamato... quindi vedo il codice del command 2:

Codice sorgente - presumibilmente Plain Text

  1. ShellTrayModifyTip GetSelectedOptionIndex()



Vedo che richiama la funzione ShellTrayModifyTip e allora mi guardo cosa fa questa funzione...

Codice sorgente - presumibilmente VB.NET

  1. Private Sub ShellTrayModifyTip(nIconIndex As Long)
  2.  
  3.          Dim nid As NOTIFYICONDATA
  4.  
  5.          With nid
  6.  
  7.             .cbSize = Len(nid)
  8.  
  9.             .hWnd = Form1.hWnd
  10.  
  11.             .uID = APP_SYSTRAY_ID
  12.  
  13.             .uFlags = NIF_INFO
  14.  
  15.             .dwInfoFlags = nIconIndex
  16.  
  17.             .szInfoTitle = "Visualizza il Balloon Tip!" & Chr(0)
  18.  
  19.             .szInfo = Text1.Text
  20.  
  21.          End With
  22.  
  23.          Call Shell_NotifyIcon(NIM_MODIFY, nid)
  24.  
  25.       End Sub



Poi ho notato che all'ultima riga richiama Shell_NotifyIcon() che è l'api dandogli in input NIM_MODIFY che è una costante. Già il nome mi insospettisce e mi guardo le dichiarazioni delle costante all'inizio del codice:

Codice sorgente - presumibilmente C++

  1. Option Explicit
  2.  
  3.       Private Const APP_SYSTRAY_ID = 999
  4.    
  5.       Private Const NOTIFYICON_VERSION = &H3
  6.    
  7.      
  8.    
  9.       Private Const NIF_MESSAGE = &H1
  10.    
  11.       Private Const NIF_ICON = &H2
  12.    
  13.       Private Const NIF_TIP = &H4
  14.    
  15.       Private Const NIF_STATE = &H8
  16.    
  17.       Private Const NIF_INFO = &H10
  18.  
  19.        
  20.  
  21.       Private Const NIM_ADD = &H0
  22.  
  23.       Private Const NIM_MODIFY = &H1
  24.  
  25.       Private Const NIM_DELETE = &H2
  26.  
  27.       Private Const NIM_SETFOCUS = &H3
  28.  
  29.       Private Const NIM_SETVERSION = &H4
  30.  
  31.       Private Const NIM_VERSION = &H5
  32.  
  33.        
  34.  
  35.       Private Const NIS_HIDDEN = &H1
  36.  
  37.       Private Const NIS_SHAREDICON = &H2



E guardandole noto:

Codice sorgente - presumibilmente Visual Basic 6

  1. Private Const NIM_DELETE = &H2



Quindi alla fine nel command3 che userò per chiudere il balloon tip inserirò l'API ma con input NIM_DELETE

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command3_Click()
  2. 'codice per chiudere il balloontip
  3. Dim nid As NOTIFYICONDATA
  4.          With nid
  5.             .hWnd = Form1.hWnd
  6.             .uID = APP_SYSTRAY_ID
  7.          End With
  8. Call Shell_NotifyIcon(NIM_DELETE, nid)
  9. End Sub



Questo è stato tutto il mio ragionamento... quando avrai un'altro problema cerca di ragionarci su



grazie! però m'interessava sapere se è possibile come gestire ciò che succede su un balloon tip fatto apparire con modify. :)

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 22:44
Martedì, 09/11/2010
"come gestire ciò che succede su un balloon tip"

specifica cosa intendi per "ciò che succede"

PM
Avatar
binarydigit0101 (Normal User)
Newbie


Messaggi: 5
Iscritto: 01/11/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:49
Mercoledì, 10/11/2010
Testo quotato

Postato originariamente da GrG:

"come gestire ciò che succede su un balloon tip"

specifica cosa intendi per "ciò che succede"



certo, allora quando appare la balloon tip, l'utente può per esempio cliccarla o aspettare che sparisca per timeout.
volevo poter gestire quando questa viene cliccata o quando questa sparisce perchè è stato raggiunto il limite di tempo.
grazie ancora!

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:16
Mercoledì, 10/11/2010
bè per il tempo limite basta che quando richiami il balloontip abiliti un timer con un certo intervallo nel quale inserisci il codice di chiusura (postato sopra) e poi usi timer1.enabled = false

comunque ho trovato una vecchia discussione dove avevo postato un esempio preso da internet molto completo...

ecco qua (ci sono le sub già pronte da richiamare):
http://www.pierotofy.it/pages/extras/forum/6/42432-vb6_e_b ...

PM
Avatar
binarydigit0101 (Normal User)
Newbie


Messaggi: 5
Iscritto: 01/11/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 15:52
Mercoledì, 10/11/2010
Testo quotato

Postato originariamente da GrG:

bè per il tempo limite basta che quando richiami il balloontip abiliti un timer con un certo intervallo nel quale inserisci il codice di chiusura (postato sopra) e poi usi timer1.enabled = false

comunque ho trovato una vecchia discussione dove avevo postato un esempio preso da internet molto completo...

ecco qua (ci sono le sub già pronte da richiamare):
http://www.pierotofy.it/pages/extras/forum/6/42432-vb6_e_b ...



d'accordo grazie; proverò a cercare meglio come risolvere il click, anche se non ho ottenuto grandi risultati.
interessante http://www.pierotofy.it/pages/extras/forum/6/42432-vb6_e_b ... !
buona giornata! :k:

PM