07/09/09 11:28
fusebyte
A dire il vero ho trovato un esempio,ma non ho capito come associarlo,perche le icone
che danno l'effetto "move" o "lampeggiante" ,secondo le icone inserite sono un un form a se stante.
Magari pubblico il codice "ma l'avro' preso qui?" "o chissa' dove" e ne discutiamo.
che danno l'effetto "move" o "lampeggiante" ,secondo le icone inserite sono un un form a se stante.
Magari pubblico il codice "ma l'avro' preso qui?" "o chissa' dove" e ne discutiamo.
aaa
07/09/09 11:35
fusebyte
'dichiarazione API Private 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 Private Const NIM_ADD = &H0 Private Const NIM_MODIFY = &H1 Private Const NIM_DELETE = &H2 Private Const NIF_MESSAGE = &H1 Private Const NIF_ICON = &H2 Private Const NIF_TIP = &H4 Private Const WM_LBUTTONDBLCLK = &H203 Private Const WM_LBUTTONDOWN = &H201 Private Const WM_LBUTTONUP = &H202 Private Const WM_MBUTTONDBLCLK = &H209 Private Const WM_MBUTTONDOWN = &H207 Private Const WM_MBUTTONUP = &H208 Private Const WM_RBUTTONDBLCLK = &H206 Private Const WM_RBUTTONDOWN = &H204 Private Const WM_RBUTTONUP = &H205 Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Dim TrayI As NOTIFYICONDATA
Private Sub Form_Load() TrayI.cbSize = Len(TrayI) TrayI.hWnd = pichook.hWnd 'Link the trayicon to this picturebox TrayI.uId = 1& TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE TrayI.ucallbackMessage = WM_LBUTTONDOWN TrayI.hIcon = imgIcon(2).Picture TrayI.szTip = "fusebyte" & Chr$(0) 'Create the icon Shell_NotifyIcon NIM_ADD, TrayI Me.Hide End Sub Private Sub Form_Unload(Cancel As Integer) TrayI.cbSize = Len(TrayI) TrayI.hWnd = pichook.hWnd TrayI.uId = 1& 'Delete the icon Shell_NotifyIcon NIM_DELETE, TrayI End End Sub Private Sub mnuPop_Click(Index As Integer) Select Case Index Case 0 'About msgbox "fusebyte" + vbCrLf + "piero.tofy", vbInformation + vbOKOnly Case 2 'End Unload Me End Select End Sub Private Sub pichook_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Msg = X / Screen.TwipsPerPixelX If Msg = WM_LBUTTONDBLCLK Then 'If the user dubbel-clicked on the icon mnuPop_Click 0 ElseIf Msg = WM_RBUTTONUP Then 'Right click Me.PopupMenu mnuPopUp End If End Sub Private Sub Timer1_Timer() 'Animate icon Static mPic As Integer Me.Icon = imgIcon(mPic).Picture TrayI.hIcon = imgIcon(mPic).Picture mPic = mPic + 1 If mPic = 14 Then mPic = 0 Shell_NotifyIcon NIM_MODIFY, TrayI End Sub
Ora c'è un form1(TrayIcon.frm)
dove sono state messi
1 Timer
9 icone
1 picturebox chiamata PICHOOK
1 menu popup (che non ci interessa)
Io ho gia' un FORM1 con tanto di codice ecc ecc,quindi dovrei capire come inglobare il codice.
Il menu popup lo elimino(non mi riesce neanche toglierlo dal FORM...)
Per la dichiarazione non ci sono problemi e neanche per i form LOAD e UNLOAD,mi domando
come trasferire i componenti del FORM1(trayicon.frm) nel mio FORM1.
Ciao
Ultima modifica effettuata da fusebyte 07/09/09 12:01
aaa
07/09/09 13:11
fusebyte
Allora ,diciamo che ho risolto la prima parte,ho importato il codice e la parte grafica(icone,picture.hWnd,timer) sul mio Form e nascoste sotto una testboxLog.
All'avvio appare una icona animata.
Pero' non ho risolto il problema del thread.
infatti il soft non si riduce ad icona e l'icona non riapre il soft.
Credo che il codice abbia bisogno di un bel po' di modifiche.
Mi aiutate?
Grazie,Ciao
All'avvio appare una icona animata.
Pero' non ho risolto il problema del thread.
infatti il soft non si riduce ad icona e l'icona non riapre il soft.
Credo che il codice abbia bisogno di un bel po' di modifiche.
Mi aiutate?
Grazie,Ciao
Ultima modifica effettuata da fusebyte 07/09/09 13:12
aaa
09/09/09 13:14
fusebyte
Ho trovato questo codice che dice sembra funzionare,pero' manca la parte,una volta ridotto
il soft in ICONTRAY, per riaprirlo dalla ICONTRAY stessa.
in un modulo bas standard:
Qualcuno conosce la parte di codice mancante per riaprire il soft dalla icontray?
Ciao
il soft in ICONTRAY, per riaprirlo dalla ICONTRAY stessa.
in un modulo bas standard:
' dichiarazione dell'oggetto icona Private ObjIcon As NOTIFYICONDATA ' dichiarazione costanti Private Const NIM_ADD = &H0 Private Const NIM_MODIFY = &H1 Private Const NIM_DELETE = &H2 Private Const WM_MOUSEMOVE = &H200 Private Const NIF_MESSAGE = &H1 Private Const NIF_ICON = &H2 Private Const NIF_TIP = &H4 Private Const WM_LBUTTONDOWN = &H201 'Button down Private Const WM_LBUTTONUP = &H202 'Button up Private Const WM_LBUTTONDBLCLK = &H203 'Double-click Private Const WM_RBUTTONDOWN = &H204 'Button down Private Const WM_RBUTTONUP = &H205 'Button up Private Const WM_RBUTTONDBLCLK = &H206 'Double-click ' dichiarazione api necessarie Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long ' dichiarazione tipo NotifyIconData 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 Sub MinimizeInTray(Text As String, QuestionForm As Form, Optional HideAfter As Boolean=True) ' trayicona = True With ObjIcon .cbsize = Len(ObjIcon) ' definizione hwnd .hwnd = QuestionForm.hwnd .uid = vbNull ' inserimento flags .uflags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE .ucallbackmessage = WM_MOUSEMOVE ' imposta l'icona della form in questione come l'icona mostrata poi nella tray .hicon = QuestionForm.Icon ' imposta il tool tip text dell'icona ' il tool tip dell'icona deve essere terminata con un chr$(0) o si avranno dei caratteri insensati alla fine! .sztip = Text & Chr$(0) End With ' affiunta dell'icona Shell_NotifyIcon NIM_ADD, ObjIcon ' nascondi la form, se è stato precisato nel codice precedente If HideAfter = True Then QuestionForm.Hide End Sub Public Sub RemoveIcon() ' rimuove l'icona nella traybar Shell_NotifyIcon NIM_DELETE, ObjIcon End Sub Public Sub EditText(Text As String) With ObjIcon ' imposta il testo a una stringa vuota .sztip = "" ' come prima, la stringa deve essere terminata con un chr$(0) .sztip = Text & Chr$(0) End With Shell_NotifyIcon NIM_MODIFY, ObjIcon End Sub
Qualcuno conosce la parte di codice mancante per riaprire il soft dalla icontray?
Ciao
aaa
09/09/09 15:00
GrG
non ho capito bene cosa vuoi fare... mettere un programma in trayicon ma che abbia un'icona "animata" tipo quella di msn?
comunque se n'è già discusso, ad esempio guarda qui:
pierotofy.it/pages/extras/forum/6/20382-tasto_riduci_ad_icona_e_trayicon/
comunque se n'è già discusso, ad esempio guarda qui:
pierotofy.it/pages/extras/forum/6/20382-tasto_riduci_ad_icona_e_trayicon/
aaa
09/09/09 15:13
fusebyte
No,vorrei solo che riducendo a icona il soft andasse in icontray sulla barra(dove è la data per intenderci) e dalla stessa icontray riaprirlo di solito con doppio click,un po' come fanno quasi tutti i soft,dove addirittura col DX del mouse hai un menu da usare per
riaprirlo,per i setting,per chiuderlo,ecc.
Una cosa di normale amministrazione per i soft attuali,solo che non conosco il relativo codice VB6.
Ciao
riaprirlo,per i setting,per chiuderlo,ecc.
Una cosa di normale amministrazione per i soft attuali,solo che non conosco il relativo codice VB6.
Ciao
aaa
09/09/09 15:27
GrG
Ok, allora, in un modulo inserisci:
poi nel button per farlo andare in trayicon:
e nel codice mettici questo:
spero sia chiaro
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 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 Const WM_MOUSEMOVE = &H200 Public Const WM_RCLICK = &H205 Public Const WM_LDBCLICK = &H203 Global TrayIcon As NOTIFYICONDATA Public Sub AddToTray(frm As Form, ToolTip As String, Icon) On Error Resume Next TrayIcon.cbSize = Len(TrayIcon) TrayIcon.hwnd = frm.hwnd TrayIcon.szTip = ToolTip & vbNullChar TrayIcon.hIcon = Icon TrayIcon.uID = vbNull TrayIcon.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP TrayIcon.uCallbackMessage = WM_MOUSEMOVE Shell_NotifyIcon NIM_ADD, TrayIcon frm.WindowState = 1 frm.Hide End Sub Public Sub RemoveFromTray() Shell_NotifyIcon NIM_DELETE, TrayIcon End Sub
poi nel button per farlo andare in trayicon:
AddToTray Form1, "Nome Programma", Form1.Icon
e nel codice mettici questo:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Msg As Long Msg = X / Screen.TwipsPerPixelX If Msg = WM_LDBCLICK Then 'click tasto sinistro 'CODICE per far apparire un menù form1.popupmenu form2.NomeMenu 'devi creare un form2 con il menu 'CODICE per farlo tornare normale: 'Form1.WindowState = vbNormal 'Call RemoveFromTray 'Form1.Show '-------------- End If End Sub
spero sia chiaro
aaa