Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Service Windows e Notify Icon
giovedì 24 novembre 2005 - 23.40
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
piccaweb
Profilo
| Newbie
2
messaggi | Data Invio:
gio 24 nov 2005 - 23:40
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
7.999
messaggi | Data Invio:
ven 25 nov 2005 - 11:20
>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
176
messaggi | Data Invio:
ven 25 nov 2005 - 11:23
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
2
messaggi | Data Invio:
ven 25 nov 2005 - 14:42
>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
176
messaggi | Data Invio:
ven 25 nov 2005 - 15:32
>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
-------------------------
Torna su
Stanze Forum
Elenco Threads
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 !