Newsgroup: it.comp.lang.visual-basic
Titolo: VSH call

Come si fa a richiamare l'esecuzione di un altro file vbs?
-- 
http://midiquiz.altervista.org


 Hai già provato così ? :
 
 Dim WshShell, oExec
 Set WshShell = CreateObject("WScript.Shell")
 Set oExec = WshShell.Exec(<tuoscript>)
Ciao
 
--------------------------------
Inviato via 
http://usenet.libero.it

 
Prima conoscevo il .Run x gli eseguibili quindi ho provato il .Exec x 
gli script:
Non mi dà errore però non succede nulla?!?
-- 
http://midiquiz.altervista.org

 Non mi dà errore però non succede nulla?!?
  Ma lo script che lanci cosa dovrebbe fare?


 
Il principale fa il boot di windows con una serie di programmi da 
lanciare.
Fra questi eseguibili, metterei uno script che mi legge l'agenda del 
giorno in un messagebox.
-- 
http://midiquiz.altervista.org

 giorno in un messagebox.
  Che Sistema operativo usi?


>   Che Sistema operativo usi?
98SE
-- 
http://midiquiz.altervista.org

 98SE
 Senti posta il codice se non è troppo lungo oppure mandamelo per email che
faccio un pò di prove.
Ciao


 Come si fa a richiamare l'esecuzione di un altro file vbs?
set oShell = CreateObject("WScript.Shell")
oShell.run"C:\WINDOWS\TEMP\X.VBS"
dove x.vbs
set oShell = CreateObject("WScript.Shell")
oShell.run"calc"
Dovresti studiare WSC e WSF che fanno piu' al  casio tuo:
2jobs.wsf
'(importante che con Start >>chiudi la R sia>> &Riavvia il sistema )
<?xml version="1.0" encoding="ISO-8859-1" ?>
<package>
<job id="part1">
<script language="VBScript">
<![CDATA[
MsgBox " This is Part 1 of the script."
Set Sh = CreateObject("WScript.Shell")
sKeyBase = "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\"
sEngine = WScript.FullName
sScript =  WScript.ScriptFullName
sCmd = sEngine & " " & "" & sScript & "" & " //I //JOB:part2"
Sh.RegWrite sKeyBase, sCmd
MsgBox "Add a RunOnce for this user."
set objshell = wscript.CreateObject("Shell.Application")
objshell.ShutdownWindows ''ATTENZIONE RIAVVIA IL SO
WScript.Sleep 200
Sh.SendKeys"r" ''''reboot
WScript.Sleep 200
Sh.SendKeys"~"
]]>
</script>
</job>
<job id="part2">
<script language="VBScript">
<![CDATA[
MsgBox " This is Part 2 of the script."
 ]]>
</script>
</job>
</package>
Questo sotto e' l'help del WSH con numerosi esempi ( sopra il mega)
http://download.microsoft.com/download/winscript56/Install/5.6/W982KMeXP/EN-US/scrdoc56en.exe
--
Fosco

 
In effetti cosě facevo, come per gli altri eseguibili, ma non mi 
funzionava; viceversa vedo che col tuo esempio va; probabilmente ci 
doveva essere un problema nel lungo nome del percorso.
Grazie, Ciao.
-- 
http://midiquiz.altervista.org

No!
Succede una cosa strana: lo script principale quando viene eseguito 
subito al boot richiama correttamente il file secondario se invece 
riprovo ad eseguirlo successivamente non lo richiama più.
Mah!
-- 
http://midiquiz.altervista.org

 ci doveva essere un problema nel lungo nome del percorso.
set oShell = CreateObject("WScript.Shell")
oShell.run"""C:\Programmi\Internet Explorer\IEXPLORE.EXE"""
'''''''''''''''''''''' 'NOTA le """   """  nel fullpath "lungo"
oppure 8.3
set oShell = CreateObject("WScript.Shell")
oShell.run"C:\PROGRA~1\INTERN~1\IEXPLORE.EXE"
Con questo sotto gestisci ancora meglio che col RUN
' penso minimo 5.6.6914 di wsh richiesto (IE 5.5 in su')
set WShell = WScript.CreateObject("WScript.Shell")
set oExec = WShell.Exec("C:\PROGRA~1\INTERN~1\IEXPLORE.EXE -k 
http://www.google.it/
")
WScript.Sleep 5000
WShell.Popup "Chiudo Google", 2, "",64
oExec.Terminate()
' copia incolla su notepad massimizzato
' nel senso che set oExec >>
www.google.it/
")  tuttosuunarigadevestare
Arguments
object
WshShell object.
strCommand
String value indicating the command line used to run the script.
The command line should appear exactly as it would if you typed it
at the command prompt.
Remarks
The Exec method returns a WshScriptExec object, which provides
status and error information about a script run with Exec along with
access to the StdIn, StdOut, and StdErr channels.
The Exec method allows the execution of command line applications only.
--
Fosco

Grazie per le tue interessanti nozioni che mi sono appuntato.
Mi sono concentrato sul problema, ho disabilitato "on error next" è 
ho focalizzato il problema.
E' mooolto strano.
Praticamente il secondo file vbs viene richiamato senza problemi in 
fase di boot, essendo il file vbs principale posto nella cartella di 
esecuzione automatica, con questa riga:
.Run "D:\CD\SOFTWARE\PROGRA~1\VBSCRIPT\CODE\CODE\PROGRA~1.VBS"
La cosa stranissima è che se successivamente al boot provo ad 
eseguire ancora il file principale mi dà questo errore:
Impossibile trovare il percorso
800A004C
Errore di run-time di Microsoft
Pur essendo lo stesso identico file che prima ha funzionato.
Inoltre se provo ad eseguire
D:\CD\SOFTWARE\PROGRA~1\VBSCRIPT\CODE\CODE\PROGRA~1.VBS
dal prompt di comandi Dos ottengo lo stesso errore; non riesce a 
trovare il file.
Per inciso uso:
Set epd = fso.OpenTextFile("C:Windows\File.Txt", 1)
per aprire un file di dati. Esiste anche un istruzione per chiuderlo 
dopo. Chissà che non c'entri?!?
Ciao!
-- 
http://midiquiz.altervista.org

> .Run "D:\CD\SOFTWARE\PROGRA~1\VBSCRIPT\CODE\CODE\PROGRA~1.VBS"
Lo sto braccando...
La stranezza si è delimitata.
Se dopo il ravvio eseguo il programma principale da una qualunque 
cartella di C:, esclusa quindi la radice, mi dà errore perché non 
trova il file secondario che si trova in una cartella di D:
Al boot tutto ok anche dalla cartella di esecuzione automatica di 
Windows.
Se invece faccio partire il programma principale da D:, da una 
qualunque delle sue cartelle o dalla radice di C: va bene.
Vorresti provare se ti fa lo stesso effetto?
E' documentato questo fenomeno?
Ciao
-- 
http://midiquiz.altervista.org

 dopo. Chissà che non c'entri?!?
Const ForReading = 1, ForWriting = 2, ForAppending = 8
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\test.txt", ForWriting, True)
   f.Write "calc"
Set f = fso.OpenTextFile("c:\test.txt", ForReading, True)
  sLine = f.ReadLine
msgbox  sLine
set oShell = CreateObject("WScript.Shell")
oShell.run sLine
WScript.Sleep 500
oShell.SendKeys "1{+}1~"
   f.Close
 Set fso=nothing
Wscript.Quit
--
Fosco