Avviare applicazione VB da un servizio scritto in VB 2005

martedì 20 maggio 2008 - 09.57

dream Profilo | Newbie

Ciao a tutti,

ho scritto un servizio in Vb 2005.
Premetto che il servizio si avvia correttamente in quanto nella lista dei servizi è presenete ed è avviato.

Lo scopo del servizio è controllare che un' apllicazione sia in esecuzione e nel caso non lo sia di avviarla.
Allo scopo ho utilizzato un timer. Il timer si avvias correttamente.

Come posso fare avviare il programma?

Posto il codice:

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

Aviando il task manager di windows, tra i processi attivi c'è prog.exe, ma l'interfaccia grafica non compare.

Come devo avviare il programma prog.exe in modo che carichi l'interfaccia grafica en riesca a leggere i file ad esso necessari?

Lanello Profilo | Senior Member

io lo avvierei come nuovo processo e non con il comando shell..

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

secondo me con questo sistema non avrai problemi ;)

tra l'altro la gestione dei processi dal servizio ti permette anche di sapere senza bisogno del timer quando il processo viene interrotto per riavviarlo automaticamente.

ciauz

-----------------------------------------------------
La ricompensa per una cosa ben fatta, è averla fatta.

dream Profilo | Newbie

Innanzi tutto grazie per la risposta e scusa se rispondo solo ora ma sono stato impegnato.

Ho provato come hai detto ma l'applicazione non si avvia come dovrebbe,

Mi spiego meglio.

Utilizzando:

Dim myP As System.Diagnostics.Process = new System.Diagnostics.Process()
myP.StartInfo.FileName = "C:\Programmi\mio percorso\prog.exe"
myP.StartInfo.WindowStyle = ystem.Diagnostics.ProcessWindowStyle.NormalmyP.Start

L'aplicazione prog.exe non si avvia (o meglio non si avvia l'interfaccia grafica anche se il taskmanager l'applicazione prog.exe la segnala come in esecuzione).

L'applicazione prog.exe è unè'applicazione scritta da me in Vb 2005 che all'avvio legge dei file di testo (ad esempio per la conn a sqlServer).

Dico questo perchè se il codice sopra lo metto in un bottone di un'altra applicazione (prog2.exe) in vb2005, l'interfaccia grafica di prog.exe si carica ma non riesce a leggere i file.

Se nel pronpt dei comandi o in Esegui scrivo C:\Programmi\mio percorso\prog.exe, l'applicazione si avvia correttamente.

Spero di essermi spiegato bene.
Grazie per l'aiuto

Lanello Profilo | Senior Member

fai una prova...

per capire se il tuo problema è dato dal servizio che non ti avvia bene il tuo prog.exe fagli avviare la calcolatrice di windows o un qualsiasi altro programma che NON hai fatto tu...

esempio:
myP.StartInfo.FileName = "C:\WINDOWS\system32\calc.exe"


magari il problema è nel tuo prog.exe


-----------------------------------------------------
La ricompensa per una cosa ben fatta, è averla fatta.

dream Profilo | Newbie

ho già provato con la tastiera e funziona correttamente.

Scusa per la tarda risposta

Lanello Profilo | Senior Member

>ho già provato con la tastiera e funziona correttamente.


con la tastiera?!?!?!?!

e che prova c'hai fatto con la tastiera?!?!?!
-----------------------------------------------------
La ricompensa per una cosa ben fatta, è averla fatta.

dream Profilo | Newbie

scusa se non mi sono fatto più sentire ma questa settimana non sono riuscito a mettere mano alla programmazione.

Ho lanciato osk.exe (la tastiera su schermo). Comunque riesco ad eseguire anche calc.exe.

Lanello Profilo | Senior Member

ottimo... quindi è fondato il mio dubbio che il problema non sia nel servizio ma nel programma che viene avviato dopo...

controlla il tuo programma che fai partire magari nell'evento "onLoad" della form principale mettici ...


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized
Me.Visible = True
Me.TopLevel = True
End Sub

almeno sei sicuro che quando avvii il tuo "prog.exe" la tua form sarà a dimensioni massimizzate, visibile e davanti a tutte le altre finestre che hai già aperto sulla tua macchina.
-----------------------------------------------------
La ricompensa per una cosa ben fatta, è averla fatta.

dream Profilo | Newbie

Il mio prog (prog.exe) funziona correttamente se lanciato normalmente. Funziona correttamente anche so lo lancio da dos o da "Esegui" o se lo lancio da un altro prog scritto in VB.

Non funziona solamente se lo lancio mediante il servizio. Oltre a non caricare la grafica, non apre neanche la porta com, necessaria per il suo utilizzo.

Lanello Profilo | Senior Member

converrai però con me che il problema è fra i tuoi due software...

hai il servizio che un'altro software lo avvia correttamente.
hai il software che se non è avviato dal tuo servizio si avvia correttamente.

il problema è quando combini i due.

prova a fare un piccolo progetto windows forms (non un servizio) identico al tuo servizio che faccia avviare il software da avviare, per vedere se il problema fosse di utenti o di autenticazione in modo che vedi se il problema è riconducibile al fatto che è un servizio....
-----------------------------------------------------
La ricompensa per una cosa ben fatta, è averla fatta.
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