Newsgroup: it.comp.lang.visual-basic
Titolo: [?2]Applicazione in Tray ma non da collegamento

Mi spiego meglio:
Ho un'applicazione che all'avvio di windows effettua un controllo in un
database. Se ha esito positivo si posiziona sulla barra com una IconTray.
Apro e quindi chiudo.
Il problema è questo. Se apro l'applicazione da un collegamento, si
posiziona sempre sulla barra, io vorrei invece che si aprisse la finestra
normale.
Avevo pensato a due eseguibili ma non mi piace, perchè ho visto che altri
programmi hanno l'icona sulla tray in apertura, ma se li apro dal
collegamento, mi aprono la finestra principale.
Ciao Carmelo

Ti regalo un po' di codice:
Inserisci una Picture con un'immagine che sarà poi la tua trayIcon.
Option Explicit
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 WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Declare Function Shell_NotifyIcon Lib "shell32" _
Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid _
As NOTIFYICONDATA) As Boolean
Dim t As NOTIFYICONDATA
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
t.cbSize = Len(t)
t.hWnd = Picture1.hWnd
t.uId = 1&
Shell_NotifyIcon NIM_DELETE, t
End Sub
Private Sub Form_Load()
t.cbSize = Len(t)
t.hWnd = Picture1.hWnd
t.uId = 1&
t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
t.ucallbackMessage = WM_MOUSEMOVE
t.hIcon = Picture1.Picture
t.szTip = "System Tray" & Chr$(0)
Shell_NotifyIcon NIM_ADD, t
App.TaskVisible = False
End Sub
Vai sicuro che funziona.
Ciao

ops..ho fatto un piccolo errore, usa quest'altro progetto, funziona più a
dovere!
----------------------------------------------------------------------------
----
MODULO
Declare Function Shell_NotifyIcon Lib "shell32.dll" (ByVal dwMessage As
Long, lpData As NOTIFYICONDATA) As Long
'If you get an error message at the beginning of the program,
'use the declaration below:
'Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "
Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As
Long
'These three constants specify what you want to do
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_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_MOUSEMOVE = &H200
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
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 IconData As NOTIFYICONDATA
----------------------------------------------------------------------------
-------------------
FORM
Private Sub Form_Resize()
If Me.WindowState = 1 Then
'The user has minimized his window
Call Shell_NotifyIcon(NIM_ADD, IconData)
' Add the form's icon to the tray
Me.Hide
' Hide the button at the taskbar
End If
End Sub
Private Sub Form_Load()
With IconData
.cbSize = Len(IconData)
' The length of the NOTIFYICONDATA type
.hIcon = Me.Icon
' A reference to the form's icon
.hwnd = Me.hwnd
' hWnd of the form
.szTip = "My Tooltip" & Chr(0)
' Tooltip string delimited with a null character
.uCallbackMessage = WM_MOUSEMOVE
' The icon we're placing will send messages to the MouseMove event
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
' It will have message handling and a tooltip
.uID = vbNull
' uID is not used by VB, so it's set to a Null value
End With
Call Shell_NotifyIcon(NIM_ADD, IconData)
End Sub
Private Sub mnuExit_Click()
Unload Me
' Unload the form
End
' Just to be sure the program has ended
End Sub
Private Sub mnuShow_Click()
Me.WindowState = vbNormal
Me.Show
End Sub

 Ciao Carmelo
ps. scusate se non mi sono presentato ma purtroppo vi leggo solo 
salutariamente ;-)
-- 
 __   __  ___   
|  | |  |/ __|  
|  |_|  |\__ \  ICQ #73176037 #162857023
|____|__||___/ 


Ci avevo pensato ma non saprei dove inserirlo, forse nella riga di comando,
ma così influisce anche anche per la chiamata da collegamento o almeno
credo.
Ciao Carmelo

 credo.
In che senso?
Il collegamento che hai nel menu avvio (per esempio in avvio->
programmi-->tua-applicazione->app.exe) o sul desktop non conterranno il 
parametro /Auto (o quello che vuoi mettere tu), per cui l'applicazione 
partirà normalmente.
Il collegamento che ci sarà invece in esecuzione automatica (avvio-->
programmi-->esecuzione automatica) invece avrà quel parametro. Se vuoi 
che l'utente non faccia confusione nella tua applicazione crei un 
pulsante/comando di menu o quant'altro che crei per lui il collegamento 
in esecuzione automatica con il parametro. 
Quindi hai 2 collegamenti al tuo esegubile separati e non avresti nessun 
problema
