Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Shell che non si fermaaaa !!!

!!! Per favore aiutatemi .
Usando la funzione Shell per lanciare un applicazione DOS, il programma
continua l' esecuzione !
Premetto che usando la funzione AppActivate, non risolvo il mio
problema.
Supponendo che SHELL mi serva a lanciare ARJ per comprimere un n°
determinato di file e che voglia fare un controllo al termine della
procedura
di compressione per verificare che il file generato esista veramente,
dovrei attendere il termine di ARJ per poi effettuare il controllo.
Questo non è possibile perchè nonostante ARJ sia in esecuzione,
(Purtroppo)  VB5 continua imperterrito
il suo avanzamento di codice provocando errore inquanto il file generato
da ARJ, Chiaramente NON esiste Ancora.
Io avrei bisogno di attendere che il programma DOS (ARJ) termini la sua
esecuzione e poi successivamente che il codice VB riprenda la sua
routine.
(? come mai la funzione "SHELL" del vecchio Visual Basic x Dos poteva
offrire questa possibilità, mentre
    in VB5 questo non è possibile  ((credo?))
Ringrazio se si riuscisse a trovare la soluzione, so che di cervelloni
ne esistono molti vi prego AIUTATEMI  !!!

Ho avuto lo stesso identico problema purtroppo e da cio'
che ho letto sulle documentazioni cosi' e' e cosi' restera'
Come l'ho risolto?
In un modo bruttissimo !!!!
Prima di lanciare la Shell DOS creo un file nella directory che viene
cancellato dal
programma DOS al termine della funzione.
Dentro VB controllo fino a che il file esiste "looppo" ..
Problema se programma DOS da errore e non cancella sei nella...
Spero di essere stato d'aiuto Ciao...
Stefano ha scritto:

--
!------------------------------------------------!
!ICQ     : 8281944
!E-Mail  : 
Dan...@levon.it
!
!"Bisogna essere pronti, ogni giorno,
! a spostare i paletti delle proprie certezze."
!
!HomePage : 
http://www.levon.it/daniele
!
!------------------------------------------------!

Sei la 1000esima persona che richiede aiuto per un problema del genere....
solo qualche giorno fa' ho postato la soluzione. Cercala tra i messaggi
vedrai che la trovi.
Ciao
Ven.


 Ven.
Ti dico anche che l'oggetto del post precedente e' :
Stato attivo : aiuto per favore.
Leggere sempre i vecchi post prima di ri.....postare.......
Ciao
Ven.

 Attilio
Prova cosi' :
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd
As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long
          Appo = "NET TIME " & Appo & " /SET /YES"
          WinHwnd = Shell(Appo, vbMinimizedNoFocus)
          WinHwnd = 0
          While WinHwnd = 0
                WinHwnd = FindWindow(vbNullString, "Esecuzione terminata -
NET")
          Wend
          RetVal = PostMessage(WinHwnd, WM_CLOSE, 0&, 0&)
Note : Questo esempio lancia un comando dos e ne attende la fine, quindi
chiude la finestra DOS che altrimenti rimarrebbe aperta.
Nel ciclo While si ricerca una finestra per la descrizione riportata nella
barra del titolo , nell'esempio :
"Esecuzione terminata - NET"
Tu sostituisci opportunamente tale valore.
Questa credo sia la soluzione + appropriata per lanciare comandi DOS o
programmi DOS ( BAT file Compresi).
Per procedure WIndows ci sono altre strade, se ne vuoi sapere di piu' queste
sono le API che dovrai utilizzare :  CreateProcessA - WaitForSingleObject -
CloseHandle
Fammi sapere
Ciao.


Guarda nel sito comune e troverai la soluzione

 Grazie da Stefano.


 !!! Per favore aiutatemi .



Ancora una precisazione.... a proposito della chiusura delle finestre DOS.
      RetCode = Shell("c:\
command.com
 /c c:\bla.bat", vbMinimizedNoFocus)
l'opzione /C dopo il Command.Com fa una cosa molto simpatica........
e potete mettere al posto di bla.bat  un comando DOS ...... tipo :
      RetCode = Shell("c:\
command.com
  /c  Dir  C:\  >c:\pippo",
vbMinimizedNoFocus)
non l'ho testata con tutti i comandi Dos !!! Ma con quelli provati non ho
avuto problemi.
Non ho neanche provato a lanciare un'eseguibile Dos (.EXE o .COM) chi ha
voglia di provare poi ci faccia sapere.
Ciao
Ven.