Newsgroup: it.comp.lang.visual-basic
Titolo: Sono sempre io

Dopo un'istruzione:
Shell "unzip.bat file.zip"
che decomprime da file.zip il suo contenuto cioč FileDaEliminare.txt
ho bisogno di eseguire:
kill "c:\FileDaEliminare.txt"
perņ purtroppo l'istruzione shell č lenta e quando kill viene eseguito il 
file ancora non č stato decompresso.
Ho provato con un loop che attenda che il file sia scritto ma mi rallenta il 
tutto.
Suggerimenti?
(Grazie a tutti per la pazienza)

 (Grazie a tutti per la pazienza)
Cerca con google "shellandwait"...
Bye
Raf
PS: nell'oggetto del post cerca di indicare un argomento più significativo, che
so, "Shell e Kill"...
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 (Grazie a tutti per la pazienza)
Sub MyShell(ByVal Percorso As String, _
            WindowStyle As VbAppWinStyle = vbMinimizedFocus, _
            ByVal Attendi As Boolean)
Dim wshell As Object
Set wshell = CreateObject("WScript.shell")
wshell.Run Percorso, windowstyle, Attendi
Set wshell = Nothing 
End Sub 
L'Utilizzo mi sembra banale
Ciao
@Alex

> Suggerimenti?
Cambia oggetto del thread.
Inoltre, cosa succede se scrivi
del c:\FileDaEliminare.txt
nel file .bat, dopo l'istruzione di unzip?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio 
news:84Z221Z220Z28Y...@usenet.libero.it...

Hai ragione per l'oggetto.
ma nel file .bat non posso scriverci l'istruzione "del" perchè non conosco a 
priori il nome del file.
Alessandro grazie, MyShell funziona a perfezione!
Mood 

 priori il nome del file.
puoi usare i parametri nel file .bat.
scrivi "del %1", e quando chiami il file .bat con Shell gli passi il
parametro nella stringa dell'argomento, cosě:
Shell "unzip.bat file.zip /c:\FileDaEliminare.txt"
Il vantaggio č che nel file .bat ogni istruzione viene eseguita solo dopo
che la precedente č terminata.
Altrimenti, per aspettare da codice VB l'esecuzione di un comando DOS, puoi
utilizzare la seguente funzione che da tempo č disponibile sul web:
' funzioni API per ottenere un valore DOS di ritorno
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As
Long, _
    ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As
Long, _
    lpExitCode As Long) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Const STILL_ACTIVE = &H103
Public Const PROCESS_QUERY_INFORMATION = &H400
' esegue un comando Shell solo dopo che il precedente č terminato
Public Sub Shell32Bit(ByVal JobToDo As String, ShellFocus As VbAppWinStyle)
' JobToDo is name of program to run
    Dim hProcess As Long, RetVal As Long ' Next line launches job as icon,
captures process id
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo,
ShellFocus))
    Do
        GetExitCodeProcess hProcess, RetVal ' Get status of process
        DoEvents: Sleep 100 ' Sleep command recommended in addition to DoEvents
    Loop While RetVal = STILL_ACTIVE ' Look while process is active
End Sub
Io utilizzo entrambi i metodi.


 file ancora non è stato decompresso.
