Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [VB6] System tray

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    18

    system tray

    buona sera volevo chiedere se qualcuno sapeva come inserire l' icona di un programma nel systray se era possibile da windows o bisogna agire tramite codice Grazie

  2. #2

    re

    In un Modulo .bas
    codice:
    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 leo As NOTIFYICONDATA
    Public Const NIM_ADD = &H0
    Public Const NIM_MODIFY = &H1
    Public Const NIM_DELETE = &H2
    Public Const WM_MOUSEMOVE = &H200
    Public Const NIF_MESSAGE = &H1
    Public Const NIF_ICON = &H2
    Public Const NIF_TIP = &H4
    Public Const WM_LBUTTONDOWN = &H201     'Button down
    Public Const WM_LBUTTONUP = &H202       'Button up
    Public Const WM_LBUTTONDBLCLK = &H203   'Double-click
    Public Const WM_RBUTTONDOWN = &H204     'Button down
    Public Const WM_RBUTTONUP = &H205       'Button up
    Public Const WM_RBUTTONDBLCLK = &H206   'Double-click
    Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Public Function HyperJump(ByVal URL As String) As Long
       HyperJump = ShellExecute(0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus)
    End Function
    Public Sub Icona(testo As String, f As Form)
    trayicona = True
     With leo
          .cbsize = Len(leo)
          .hwnd = f.hwnd
          .uid = vbNull
          .uflags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
          .ucallbackmessage = WM_MOUSEMOVE
          .hicon = f.Icon
          .sztip = testo
       End With
    Shell_NotifyIcon NIM_ADD, leo
    End Sub

  3. #3

    re

    scusa mi e' partito invio

    in un Form inserissci un menu (ctrl+ e) (menu) visibilita false
    e una voce si sotto menu (pop1) che vuoi visualizzare sul'icona della tray


    codice:
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoEvents
    Msg = Button
    'Debug.Print str(Msg)
    Msg = X / Screen.TwipsPerPixelX
    Select Case Msg
        Case WM_LBUTTONDBLCLK
        Menu pop1 
        Case WM_RBUTTONUP
           Case WM_RBUTTONDBLCLK
        Menu pop1
    End Select
    End Sub
    
    
    Private Sub Form_Terminate()
    Shell_NotifyIcon NIM_DELETE, leo
    End Sub
    
    
    Private Sub popmenu1_Click()
    'azioni che vuoi fare al click sulla voce di menu sull'icona
    End Sub
    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    18

    systray

    non sono tanto esperto potresti darmi una spiegazione della prima parte la seconda e' ok grazie

  5. #5
    la prima parte devi solo copiarla in un modulo.bas

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    18

    systray

    ricomincio
    mettiamo caso che io abbia un' applicazione che si avvia automaticamente ogni volta che parte il sistema operativo.
    Vorrei che la stessa non rimanesse visibile per esteso ma che si avviasse direttamente nel systray.
    Come dovrei comportarmi in tal caso?
    Grazie per la pazienza

  7. #7
    ...Terrible warlords, good warlords, and an english song

  8. #8

    re

    per avvio automatico devi scrivere una key nel regedit del tipo:


    codice:
    ' nella dichiarazione di un form
    
    Dim lngRegKeyROOT As Long
    Dim strTempRegKeyRoot As String
    Dim strRegKeyName As String
    Dim lngKeyDataType As Long
    Dim strKeyValueName As String
    Dim KeyDataValue
    Private Const KEY_ALL_ACCESS = &H2003F
    Private Declare Function GetComputerName Lib "Kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" ( _
        ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
        ByVal samDesired As Long, ByRef phkResult As Long) As Long
    Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" ( _
        ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _
        ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
        ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
    Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" ( _
        ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _
        ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" ( _
        ByVal hKey As Long, ByVal lpValueName As String) As Long
    Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" ( _
        ByVal hKey As Long, ByVal lpSubKey As String) As Long
    Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
    
    
    Private Sub cmdAction_Click()
      If Check1.Value = 1 Then
        Dim Message As String
        
    Dim path As String
    
     lngRegKeyROOT = &H80000002 
     strRegKeyName = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
              path = App.path & "\" & "pippo" & ".exe"
              lngKeyDataType = 1
              strKeyValueName = "pippo.exe"
              
              KeyDataValue = path
          Call SetKeyDataValue(lngRegKeyROOT, strRegKeyName, lngKeyDataType, strKeyValueName, KeyDataValue)
    end if
    end sub
    
    
    
    
    Private Sub SetKeyDataValue(RegKeyRoot As Long, RegKeyName As String, KeyDataType As Long, KeyValueName As String, KeyValueDate As Variant)
        
        Dim OpenKey As Long, SetValue As Long, hKey As Long
        
        OpenKey = RegOpenKeyEx(RegKeyRoot, RegKeyName, 0, KEY_ALL_ACCESS, hKey)
        
        If (OpenKey <> 0) Then
            Call RegCreateKey(RegKeyRoot, RegKeyName, hKey)
        End If
        Select Case KeyDataType
            Case 1:
                SetValue = RegSetValueEx(hKey, KeyValueName, 0&, KeyDataType, ByVal CStr(KeyValueDate & Chr$(0)), Len(KeyValueDate))
            Case 3:
                SetValue = RegSetValueEx(hKey, KeyValueName, 0&, KeyDataType, ByVal CStr(KeyValueDate & Chr$(0)), Len(KeyValueDate))
            Case 4:
                SetValue = RegSetValueEx(hKey, KeyValueName, 0&, KeyDataType, CLng(KeyValueDate), 4)
        End Select
        
        SetValue = RegCloseKey(hKey)
           
    End Sub
    questo codice all'avvio di Windows ti esegue il file pippo.exe
    naturalmente deve essere lanciato almeno una volta l'exe
    per scrivere la path esatta
    spero di essere stato chiaro
    Ciao

  9. #9
    Ciao! Per me sei stato chiarissimo, e ti ringrazio!
    Se volessi creare una applicazione come MSN che oltre all'icona ed al menu nel System Tray visualizza anche delle finestre a seguito di determinati eventi, come posso fare?
    -... Jack: quando ti viene in mente un'idea, scrivila e basta!-
    (Alec Baldwin "Caccia a Ottobre Rosso)

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    In questa discussione, già conclusa da tempo, l'argomento è già stato cambiato più volte. Apri una nuova discussione per ogni nuovo quesito.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.