Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Cancellare un processo attivo in memoria
Forum - Visual Basic 6 - Cancellare un processo attivo in memoria

Avatar
gvigliani (Normal User)
Pro


Messaggi: 106
Iscritto: 30/12/2006

Segnala al moderatore
Postato alle 10:59
Domenica, 07/11/2010
Ciao a tutti,

ho uno dei miei soliti problemi complessi che senza il vostro aiuto non riuscirei mai a risolvere.
Ho sviluppato una applicazione che utilizza un foglio Excel per recuperare dati ed immettere dati.
Il foglio excel interagisce con un'altra applicazione che prevede che solo una versione Excel.exe sia in memoria altrimenti non funziona.
Il mio programma, al suo inizio va a vedere se in memoria c'è una versione di EXCEL.EXE e li' mi fermo , comunicando di entrare nel Task Manager ed eliminarla.
Vorrei che questo lavoro lo facesse il mio programma eliminando tutti i processi EXCEL.EXE attivi in memoria.

Pensate si possa fare??

Grazie

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 11:21
Domenica, 07/11/2010
Tu vuoi terminare il processo excel.exe, si è possibile, ma di certo non è una soluzione "carina"...

Se l'altro tuo programma avvia excel.exe sarebbe meglio che quando individua l'apertura del tuo programma allora chiude (senza terminare il processo) excel.exe che precedentemente ha avviato

PM Quote
Avatar
gvigliani (Normal User)
Pro


Messaggi: 106
Iscritto: 30/12/2006

Segnala al moderatore
Postato alle 11:29
Domenica, 07/11/2010
Ciao amico,
hai gia' avuto modo di aiutarmi e ti ringrazio.
Non mi sono spiegato bene e quindi mi ripeto sperando di riuscire a farmi capire.
E' il mio programma ad aprire un foglio Excel e solo uno ne deve essere aperto altrimenti l'altro programma non riesce ad intercettarlo.
Quindi l'unica soluzione è quella di chiudere tutti processi attivi chiamati EXCEL.EXE.

Grazie

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 14:43
Domenica, 07/11/2010
Allora ti premetto che io non ho lavorato mai da vb6 con excel quindi non ti posso essere molto d'aiuto...

Comunque tu come avvi tali fogli? Cioè che componente usi?

Probabilmente (penso) userai un activex per gestirti i fogli (perchè mi pare ce ne fosse uno fatto apposta), quindi devi trovare il modo di chiuderli (in maniera corretta).

Comunque, sia che usi activex o meno, mostra il codice che usi per gestire questi fogli excel

Anche se non è affatto la soluzione migliore, per terminare un processo puoi usare...

Dim Processo As Variant

Function TerminaProcesso(NomeProcesso As String)
On error resume next
   For Each Processo In GetObject("winmgmts:").InstancesOf("win32_process")
       If Processo.Name = NomeProcesso Then Processo.Terminate
   Next
End Function

e usare poi...

TerminaProcesso "EXCEL.EXE"

PM Quote
Avatar
gvigliani (Normal User)
Pro


Messaggi: 106
Iscritto: 30/12/2006

Segnala al moderatore
Postato alle 15:13
Domenica, 07/11/2010
Grazie dell'aiuto.
Avevo provato soluzioni piu' lunghe ed articolate senza, peraltro, riuscire nell'impresa.

Gaspare

PM Quote