Newsgroup: it.comp.appl.access
Titolo: Comando Shell

Ho un file Access che lancia 4 file eseguibili contemporaneamente come
faccio ad eseguirli in successione cioč prima il file 1 poi quando ha finito
il file 2 etc etc. (come il comando CALL)
es.
Shell ("C:\dir\file1.bat")
Shell ("C:\dir\file2.bat")
Shell ("C:\dir\file3.bat")
Shell ("C:\dir\file4.bat")
Ciao e Grazie

 ha scritto nel messaggio
news:9abto2$k89$1...@lacerta.tiscalinet.it...

Una strada potrebbe essere questa:
'Nella sezione dichiarazioni della maschera
Private Type STARTUPINFO
   cb As Long
   lpReserved As String
   lpDesktop As String
   lpTitle As String
   dwX As Long
   dwY As Long
   dwXSize As Long
   dwYSize As Long
   dwXCountChars As Long
   dwYCountChars As Long
   dwFillAttribute As Long
   dwFlags As Long
   wShowWindow As Integer
   cbReserved2 As Integer
   lpReserved2 As Long
   hStdInput As Long
   hStdOutput As Long
   hStdError As Long
End Type
Private Type PROCESS_INFORMATION
   hProcess As Long
   hThread As Long
   dwProcessID As Long
   dwThreadID As Long
End Type
Private Declare Function WaitForSingleObject Lib _
"kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds _
As Long) As Long
Declare Function CreateProcessA Lib "kernel32" _
(ByVal lpApplicationName As Long, ByVal lpCommandLine As _
String, ByVal lpProcessAttributes As Long, ByVal _
lpThreadAttributes As Long, ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, _
ByVal lpCurrentDirectory As Long, lpStartupInfo As _
STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) _
As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject _
As Long) As Long
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = -1&
Procedure
Metti il codice seguente nel tuo progetto,puoi chiamare un programma esterno
da qualsiasi punto,semplicemente con : call ExecCmd(programma)
Public Sub ExecCmd(cmdline$)
  Dim proc As PROCESS_INFORMATION
  Dim start As STARTUPINFO
  start.cb = Len(start)    "inizializza la struttura STARTUPINFO"
  ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _    "lancia l'exe "
  NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
"attende la fine dell'applicazione"
  ret& = WaitForSingleObject(proc.hProcess, INFINITE)
  ret& = CloseHandle(proc.hProcess)
End Sub

Scusami ma io non sono cosě avanti ho capito 1/4 delle cose che hai scritto
non cč qualcosa di piů semplice?
Mi basterebbe anche un timer di 5 secondi per eseguiblile
es.
Shell ("C:\dir\file1.bat")
dopo 5 "
Shell ("C:\dir\file2.bat")
dopo 5 "
Shell ("C:\dir\file3.bat")
dopo 5 "
Shell ("C:\dir\file4.bat")
Comunque sei stato gentilissimo per la risposta
Ciao

 ha scritto nel messaggio
news:9acdgl$p7b$1...@pegasus.tiscalinet.it...

Allora utilizza gli eventi "Su Timer" e "Intervallo Timer" della maschera.
Ciao, Carlo

Ha funzionato perfettamente grazie tante per l'aiuto
Ciao

 wrote in message 9ack4e$rl1$1...@pegasus.tiscalinet.it...


 ha scritto...

Sito Comune:
General, "Avviare un file eseguibile ed attenderne la fine.", AntoGal
Dopo aver messo in un modulo quel codice, la tua sequenza si trasforma in:
RunAppAndWait ("C:\dir\file1.bat")
RunAppAndWait ("C:\dir\file2.bat")
RunAppAndWait ("C:\dir\file3.bat")
RunAppAndWait ("C:\dir\file4.bat")
senza sprecare un solo secondo in piů di quelli necessari.
--
Ciao, AntoGal
*************************************************
Gestione punti vendita (casse e pos NCR)
 
www.powerretail.it
-------------------------------------------------------------
per scaricare un gioco di DAMA ITALIANA
http://volftp.mondadori.com/italiani/galletta/
*************************************************

RunAppAndWait ("C:\dir\file1.bat")
Ciao, Antonello, tempo fa (molto, temo) si era discusso su
come chiudere la finestra dos, quando cls non funziona, ma
non ricordo...
duiu'?
--
Lorenzo Coronati
--
<<In questo momento leggendo la mia mail mi hai 
dato numerose informazioni su tuo computer.>>
(Guglia, 1/3/2001)
--

 duiu'?
iesaidu'
L'altra soluzione era di cliccare col tasto destro sul file BAT da lanciare,
e dalla finestra delle Proprietą -> Programma -> Chiudi all'uscita.
Dovrebbe funzionare.


e dalla finestra delle Proprietà -> Programma -> Chiudi all'uscita.
Groan :-|
Il fatto e' che il file .bat lo creo da codice...



Un'ideuccia l'avrei, anche se non è molto professionale.
Trasforma un file .lnk che funziona in una serie di codici ascii e ricrea il
file da codice,
quindi non dovrai più eseguire il file .bat ma quello .lnk.
Non ho mai provato ma credo che funzionerà ;-)
--
Claudio Tregambe

quindi non dovrai piů eseguire il file .bat ma quello .lnk.
Bravo Claudio!
Funge alla grande :-)))
Basta trattare un byte alla volta.
THX
--
Lorenzo Coronati
--
[si parla di ODE/MOD, ndr]
<<chi sarebbe cosi' gentile da passarmelo? 
in caso posso ricambiare con qualache mp3...:)))>>
(Koala, 5/3/2001)
--

 .....
Sono lusingato ;-)
ciao ciao
--
Claudio Tregambe