[Vb]Attendere chiusura programma.

venerdì 18 luglio 2008 - 12.52

Hope Profilo | Junior Member

Salve ragazzi
Scusate se rompo di nuovo, sto facendo uno script che copia dei file e alla fine apre il log generato,solo che il log mi si apre prima che lo script termini.
Vi allego il codice
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Sono le ultime due righe dello script che ho fatto,praticamente mi esegue STRDOS2 prima che STRDOS termini,questo è un problema perchè mi apre il log,io vorrei che il log si aprisse solo quando STRDOS termini l'esucuzione.
Come posso fare?
Avevo pensato di mettere un pausa ma non so mai il tempo che impiega STRDOS per terminare.
Grazie a tutti per i consigli

Dainesi Profilo | Senior Member

Puoi procedere in due modi:

a) senza attendere oltre distruggi l'oggetto creato con un Set a Nothing e quindi ricrei l'oggetto ed esegui il codice restante.

b) tramite le API di Windows enumeri tutte le finestre di Windows aperte e ne esamini il nome (caption). Se non trovi il nome della tua applicazione lanciata nella Shell allora puoi proseguire (immetti il tutto in un ciclo While).

Hope Profilo | Junior Member

Grazie Dainesi, la soluzione A sembra quella più facile,solo perdonami ma non l'ho capita.
Non sono molto esperto di programmazione.

Dainesi Profilo | Senior Member

strdos= "robocopy " & Chr(34) & strsorgente & Chr(34) & " " & strdestination & "Bck" & strname & " /e /R:2 /W:5 /V /LOG:" & strdes & "risultato.log"
WshShell.Run(strcmd)

Set WshShell = Nothing
Set WshShell = CreateObject("Shell.Application")

strdos2= "notepad.exe " & strdestination & "risultato.log"
WshShell.Run(strcmdr)

Hope Profilo | Junior Member

Grazie per l'aiuto,ma ancora non mi funziona.
Mi genera un'errore all'ultima riga con scritto "Proprietà o metodo non supportati dall'oggeto 'WshShell.Run' "
Se non metto le due righe "set" non mi da nessun errore

Grazie ancora...

Dainesi Profilo | Senior Member

Effettivamente l'Oggetto Shell non ha un metodo Run ....

Forse dovresti utilizzare la funzione Shell che ti restituisce l'Handle della finestra aperta.

Hope Profilo | Junior Member

Dovrò studiare meglio la programmazione,mi sà, perchè non saprei da dove iniziare per fare come mi hai suggerito tu.
Ora cambio un pò il programma,le cose troppo complicate per ora le lascierò perdere.
Sei stato davvero gentile,grazie.

Saluti

Dainesi Profilo | Senior Member

Prova a usare

dim hwd as double

hwd = Shell(PathName,WindowStyle)

dove in path name ci metti la tua stringa di comando e in WindowStyle ci metti uno dei sei metodi di esecuzione di una finestra Windows.
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5