VB.NET - Creare un servizio che esegue un programma e venga visualizza...

mercoledì 12 settembre 2012 - 10.00
Tag Elenco Tags  VB.NET  |  .NET 1.0  |  .NET 1.1  |  .NET 2.0  |  .NET 3.0  |  .NET 3.5  |  .NET 4.0  |  Windows 7  |  Windows XP  |  Visual Studio 2010

Davide1986 Profilo | Junior Member

Ciao a tutti , volevo chiedere se era possibile creare un servizio in VB.NET che esegue un programma ex: la calcolatrice e la visualizza sul desktop dell'utente.

Quindi quando l'utente inserisce il suo Username e Password di Login Windows e si collega al suo Account, oltre a caricare le icone del desktop, si carica questo programma esempio la calcolatrice "calc.exe" .

I sistemi operativi su cui andrà questo servizio sono Windows XP e Windows 7 .

Premetto che non va bene creare il link di collegamento di "Esegui Automatica" perché mi serve caricarlo prima che carica il Desktop e la barra Start quindi serve un servizio che fa al caso mio.

Situazione Progetto Servizio :

1) Sono in grado di creare un servizio base
2) Creare il componente Installazione / Disinstallazione Servizio

Non sono in grado :

1) Quale comando mi serve per far in modo di avviare un programma, e che lo visualizzi sul Desktop di Windows XP e Windows 7, premetto che gli account sono tutti amministratori.

P.S. Se non è chiaro qualcosa sono qui a vostra completa disposizione.

dupperelko Profilo | Junior Member

Ciao,
quando crei un servizio con Visual Studio e imposti nelle sue porprietà che avvio = auto
e lo installi sulla macchina, lui si attiva quando sale l'o.s.
quindi non devi far niente...
una volta installato, girà in automatico

ciao

Davide1986 Profilo | Junior Member

Grazie della risposta, quello che volevo chiedere se il mio servizio volesse aprire un programma ben preciso esempio "calc.exe" quello della calcolatrice che riga di codice dovrei usare?! Ecco il codice che uso :

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Con il codice che ho postato è vero che esegue il programma "calc.exe" ma non si vede la finestra, ma appare nel TaskMenager .
Il mio scopo è di visualizzarlo nel Desktop di chi ha effettuato il Login.

Cosa mi consigliate?! Ho messo Automatico il servizio!! Voi come fareste per fare in modo che avviato il servizio apre un'applicazione sul Desktop di chi ha effettuato il Login?!

Grazie di tutto.

dupperelko Profilo | Junior Member

questo lo uso per NON mostrare finestre, prova a cambiare true con false e vedi se cambia q.sa (è in c#, ma lo converti online facilmente)

var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = @"C:\..............exe",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};

proc.Start();

ciao

Davide1986 Profilo | Junior Member

Grazie dupperelko, ho convertito ma niente non mi fa vedere la finestra del programma della calcolatrice, ma il processo esiste e quindi ci deve essere da qualche parte :

Per chi può interessare il codice convertito :

Dim Prc As New ProcessStartInfo("Calc.exe") Prc.Verb = "runas" Prc.UseShellExecute = False Prc.RedirectStandardOutput = True Prc.CreateNoWindow = True Prc.WindowStyle = ProcessWindowStyle.Maximized Process.Start(Prc)

Neanche se utilizzo quest'altro metodo, non mi fa vedere la finestra del programma .

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ho capito che i servizi non sono visuali, ma neanche danno la possibilità di avviare programmi che aprono le finestre, c'è qualche soluzione al riguardo?!
Non vi è mai capitato di creare un servizio che avvia un programma creato con le Form?!

-------------------------------------------------------------------------------------------------------------------------------------------
SOLUZIONE ALLA DOMANDA :
-------------------------------------------------------------------------------------------------------------------------------------------

Una soluzione ho trovato per Windows XP e Windows 7 ma è un'operazione manuale :
E' di andare su Pannello di Controllo -> Strumenti Amministrazione -> Servizi -> Selezionare il servizio creato -> Click Mouse Destro -> Proprietà -> Connessione -> Spuntare "Consenti al servizio di integrare col Desktop"

Facendo cosi riesco a risolvere e far vedere la finestra della calcolatrice. Conoscete da codice per impostare tale opzione in VB.NET

HO RISOLTO IN QUESTO MODO AGGIUNGENDO QUESTA FUNZIONE AL FILE ProjectInstaller.vb

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questa funzione viene avviata solo quando si installa il servizio e poi basta. Serve per far apparire la spunta "Consenti al servizio di integrare col Desktop" senza farla manualmente.

Ricordatevi che il servizio funziona solo al riavvio dopo aver installato, quindi dovete fare in modo che il sistema si ravvia.

Grazi in anticipo.
Davide
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5