Service Windows e Notify Icon

giovedì 24 novembre 2005 - 23.40

piccaweb Profilo | Newbie

Ciao a tutti!
Nella realizzazione del mio applicativo ho deciso di affiancare alla visualizzazione del suo funzionamento una icona nella taskbar di windows che permetta di capire, appunto, lo stato del programma.
Tutto funziona correttamente, sia il programma che l'icona.

Ora, devo fare in modo che il l'interfaccia grafica dell'utente non venga assolutamente mostrata ma che resti visibile solamente l'icona; quindi ho pensato di creare un servizio di windows che andasse a creare una istanza del mio programma principale.

Anche in questo caso non avuto grossi problemi nel far funzionare il programma, ma l'unica cosa é che l'icona non appare assolutamente nella taskBar.
Se eseguo il programma normalmente, facendo doppio click sull'eseguibile( quindi non come servizio) l'icona viene mostrata correttamente, ma nel momento in cui faccio partire il servizio l'icona non viene visualizzata.

Come mai?

Spero che possiate aiutarmi...
Ciao

Brainkiller Profilo | Guru

>Se eseguo il programma normalmente, facendo doppio click sull'eseguibile(
>quindi non come servizio) l'icona viene mostrata correttamente,
>ma nel momento in cui faccio partire il servizio l'icona non
> viene visualizzata.

Ciao,
come ben sai è natura di un Servizio Windows non apparire se non sottoforma di processo nell'elenco dei processi nel Task Manager. Un servizio non deve visualizzare niente, nè icone nè finestre nè altro. L'unica cosa che puoi fare è creare un client che si colleghi al servizio (così come succede con software server tipo SQL Server, MySQL ecc.).

Il consiglio che ti do è rimanere sulla applicazione client (non servizio) e nascondere la finestra principale:
Me.Visible=false
o spostare la finestra fuori dallo schermo con coordinate top e left maggiori dell'area visibile.
Non ti sembra una soluzione più rapida ed efficace ?

Poi dall'icona sulla Tray crei un menù in modo che puoi decidere come e quando far riapparire la finestra.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Jumpa Profilo | Junior Member

ho avuto lo stesso problema.,...
e mi sono soffermato su come è realizzato Norton Antivirus,
bene i servizi tipicamente non hanno interazione col desktop utente, e tipicamente sono avviati son l'utenza system e non con l'utente attualmente connesso.
Se ci fai caso Nav è costituito da un servizio che parte all'avvio del sistema ed un processo in esecuzione automatica ( per l'appunto lanciato tramite la chiave di registro HKLM\softwaew\windows\currentVersion\run )
ed è proprio questo processo che mette l'iconcina nella system try.

Io in una mia applicazione ho fatto lo stesso, ho un servizio e poi un processo in esecuzione automatica, i due dialogano tra di loro ed il processo mi cambia l'iconcina sulla sytem try a seconda dello stato.

Jumpa


-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------

piccaweb Profilo | Newbie

>L'unica cosa che puoi fare è creare un
>client che si colleghi al servizio (così come succede con software
>server tipo SQL Server, MySQL ecc.).
>
E come si crea un client che si colleghi al servizio?

>Il consiglio che ti do è rimanere sulla applicazione client (non
>servizio) e nascondere la finestra principale:
>Me.Visible=false
Potrebbe essere una alternativa.
Se dovessi procedere in questo modo e aprendo il task manager, vedrei il mio eseguibile
nella finestra dei processi o delle applicazioni?

>Non ti sembra una soluzione più rapida ed efficace ?
Mi sembra la soluzione più semplice e rapida...

Grazie


Jumpa Profilo | Junior Member


>E come si crea un client che si colleghi al servizio?
>

tramite vb.net puoi controllare lo stato di un qualsiasi servizio ( run, spopped, etc... )
puoi anche fare un giochino con un "cuscino nel mezzo"
il servizio fa quello che deve fare e ti mette una variabile di stato da qualche parte.. che ne so nei registri.. e tu la interroghi ogni tot..... e vedi che valore assume...

resta il fatto che cmq sia qualcosa hai nel task manager!

-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5