Newsgroup: it.comp.lang.visual-basic
Titolo: aprire e chiudere un eseguibile

Ho necessità di lanciare un eseguibile e poi dopo un periodo di
funzionamento dello stesso (10 0 15 minuti) chiuderlo in automatico.
Questo programma acquisisce dei dati da una scheda apposita e poi li
salva su una cartella da me appositamente creata. Io devo poter
ciclicamente salvare in un altra cartella i dati registrati
dall'eseguibile, ma non posso farlo se è in esecuzione!!! Se qualcuno
potesse darmi qualche consiglio su come risolvere questo problema ( che
per un principiante come me sembra insormontabile)gli sarei veramente
grato.
Ringrazio anticipatamente
Fabio

 funzionamento dello stesso (10 0 15 minuti) chiuderlo in automatico.
Forse con un End dopo che sono passati 10 minuti
Timer1.Interval= 10 minuti
Sub Timer1.Tiomer
    End
End Sub
--
Greg

funzionamento dello stesso (10 0 15 minuti) chiuderlo in automatico.
Non ho capito bene...
Tu vuoi scrivere un programma Vb che ti lanci un eseguibile e poi dopo n 
minuti lo chiuda, oppure vuoi scrivere un programma in Vb che dopo n minuti 
si chiuda da solo? 

Vorrei scrivere un programma in Vb che mi lanci un eseguibile e poi lo
chiuda dopo n minuti.

 dall'eseguibile, ma non posso farlo se è in esecuzione!!!
Non ho capito per quale motivo. Potresti salvare i dati in un file txt, e
poi leggerlo e copiarlo nell'altra cartella. Comunque....
Per aprire un programma da codice puoi usare l'istruzione Shell()
Per chiudere da codice un programma in esecuzione puoi usare l'istruzione
Kill().
Ulteriori informazioni sulle due funzioni le trovi sulla guida in linea.
Per eseguire una cosa qualsiasi ogni tot minuti puoi usare un controllo
Timer. Supporta fino a 65 minuti di intervallo (65535 millisecondi), e su
questi livelli di scansione è abbastanza preciso.
Spero ti sia utile.Ciao.
PS: non chiudere MAI un programma utilizzando l'istruzione End, a meno che
non si tratti di un server ActiveX. A parte questo caso, i programmi si
chiudono scaricando tutte le form, e ci sono vari esempi in rete.
L'istruzione End lascia caricate nella ram un sacco di istanze di roba che
serve a VB o al programma, ma non serve più quando è chiuso. Se utilizzi un
controllo ADO, il suo recordset interno può rimanere caricato nella ram.
Addirittura, se utilizzi un file .mdb il corrispondente file .ldb spesso
rimane aperto, e in questo caso quando un altro utente prova ad accedere al
database riceve un messaggio di errore che dice che il database è occupato
da un altro utente, anche se la macchina lavora in locale. Insomma, non
usare mai l'istruzione End per chiudere un programma.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Sono riuscito a risolvere il problema, grazie mille a tutti per
l'aiuto!!!!!!!!!!!

 meno che non si tratti di un server ActiveX.
Ok, se End non va bene, quale altre istruzioni ci sono per chiudere il mio
programma?
Posto  che recorset, database a similari me li sono gia chiusi da me, a
questo punto io conosco solo End :(
Grazie
--
Greg

 programma?
Te l'ho detto prima: scaricare tutte le form del programma.
Caso 1: il programma ha una sola form, frmMain
Private Sub btnExit_Click()
    Unload Me
End Sub
Caso 2: il programma ha un numero conosciuto di form aperte (p. es. due:
frmMain e frmChild)
Sulla form che lancia il comando di uscita dal programma (in questo esempio,
frmMain) va scritto:
Private Sub btnExit_Click()
    Unload frmChild ' chiude la form secondaria
    Unload Me ' chiude la form principale
End Sub
Caso 3: il programma ha un numero variabile di form che possono essere
aperte
Sulla form che lancia il comando di uscita dal programma (in questo esempio,
frmMain) va scritto:
Private Sub btnExit_Click()
    ChiudiTutteLeFormAperte Me.Name ' chiude tutte le form, meno questa
    Unload Me ' chiude questa form
End Sub
' chiude tutte le form aperte, tranne quella che chiama la sub
' (questa routine non è necessaria per chiudere le form modali figlie di
frmMain)
Private Sub ChiudiTutteLeFormAperte(FormChiamante As String)
    Dim frm As Form
    For Each frm In Forms
        If Not frm.Name = FormChiamante Then Unload frm
    Next frm
End Sub
Sul web ci sono centinaia di esempi di codice simile. Anche qui sul forum ci
sono tanti esempi, perchè ne è stato parlato un sacco di volte. Infine tutti
i libri di VB consigliano di non utilizzare l'istruzione End.
Spero ti sia utile. Ciao


 End Sub
Ho sempre letto su tutti i libri di usare Unload per chiudere la from ed End
per terminare il programma, lasciando intendere che anche chiudendo tutte le
form con Unload, il prog o qualcosa del prog in qualche modo continua a
rimanre tra i piedi.
E invece pare sia il contrario!
In ogni caso, prendo nota, ti ringrazio, e provo.
Non si finisce mai di imparare, pazienza  :(
--
Greg

> Ho sempre letto su tutti i libri .....
[...CUT...]
Il primo che mi è capitato in mano:
"Non utilizzare mai l'istruzione End
L'utilizzo dell'istruzione End all'interno di programma VB comporta numerosi
rischi: i database potrebbero non essere chiusi correttamente, gli oggetti
potrebbero non essere terminati nel modo corretto, ecc. Sarebbe bene
terminare sempre un programma scaricando tutte le form, il che è possibile
utilizzando la seguente routine:
For index = Forms.Count - 1 To 0 Step -1
    Unload Forms(index)
Next
oppure con un ciclo Do While:
Do While Forms.Count > 1
    Unload Forms(0)
Loop
In realtà il codice precedente non scarica la form dalla quale è stato
lanciato. Per scaricare effettivamente tutte le form di un'applicazione
dall'interno di un'altra form, occorre aggiungere un'istruzione Unload Me."
(F. Balena - "I trucchi di Visual Basic 6" - I Miti Informatica Mondadori -
euro 10.70 - pag. 4)


 "Non utilizzare mai l'istruzione End
E che ti devo dire?
Sicuramente ricordo male :)
--
Greg