Newsgroup: it.comp.lang.visual-basic
Titolo: Domanda veramente hardcore

Devo lanciare un programma Dos e catturarne il suo l'output su un file, fin
qui ci riesco tramite l'API createprocess ma ora il problema e che devo dare
dei comandi  in sequenza da riga di comando, faccio un esempio banale
eseguo dir *.* /p
quando finisce la schermata mi chide di premere un tasto per continuare,
come e possibile farlo? Tenete presente che la sequenza non deve essere
gestita in modo sincrono ma, devo solamente lanciare i comandi ( premere un
numero noto di volte un tasto per procedere con lo scorrimento ).
Riuscite ad aiutarmi, almeno dicendomi se esisto e quali sono le api che mi
permettono di fare ciň?
un grazie in anticipo Maurizio.

Non sono sicuro di aver capito bene; comunque se lanci un programma Dos puoi
usare questo "trucchetto": crei un file che contiene tutti i tasti che ti
serve premere e lanci il programma reindirizzando l'output del file.
es. se il tuo batch contiene:
 dir *.* /p
puoi creare un file invii.txt che contiene un tot di invii; poi
dir *.* /P<invii.txt
Unico problema è il buffer di tastiera che rischia in questo modo di
riempirsi, non so a quanto sia settato con Win, con Dos erano 15 caratteri.

Passa a Unix  :-)
Forse il dir /p e' solo un esempio, ma e' ovvio che il programma si
aspetti la pressione di un tasto se tu esegui dir con l'opzione /p ...
ciao
		maxx

-- 
Massimo Conter
<Consulenze Informatiche e Sviluppo Software>
email: 
emm...@laserinforma.com
email urgenti:	
03397...@posta.tim.it

guarda che il piping funziona anche con il DOS...
ed anche la periferica 'con:'...
--[GbC]--

xché non spieghi esattamente cosa hai in mente, che magari c'č qualche
metodo piů semplice che aprire una shell dos?
--[GbC]--

Approposito, macheèlaperiferica CON???
COM1 --> porta seriale 1
COM2 --> porta seriale 2
LPT1 --> porta parallela 1
NULL --> oblio
FILE --> file system
CON --> ???

 wrote


se non lo sai ti manca il kilometraggio.... ;)
apri una finestra dos e scrivi
c:\>dir > con
capito?
--[GbC]--

"km" nel senso dei miei "vecchi manuali" ?
GbC <mac...@ti.importa> wrote


Scusate per il casino che sto creando ma il problema e il sequente:
Devo semplicemente eseguire dei programmi  Dos che funzionano solo da riga
di comando, che non prevedono la possibilità di passargli come input un file
di comandi e che non possono neanche reindirizzare l'output su file.
Reindirizzare l'ouput tramite
    prog > FileOutput.txt
potrebbe anche andare bene ma, come faccio a dargli i comandi necessari?
Faccio un'altro esempio con qualcosa che magari riesco a farmi capire:
eseguo l'Oracle Server Manager
svrmgr23
dopodichè magari  voglio lanciare i seguenti comandi
select * from sys.dba_views;
drop qualchecosa;
altri comandi
...
...
quit;
Spero che questa volta sia stato più chiaro a spiegare cosa devo fare.
ringrazio tutti per l' interessamento al problema.
Maurizio

 ringrazio tutti per l' interessamento al problema.
non sono affatto sicuro di avere capito, ma non perche' tu non ti sia
spiegato, qto x' faccio un po' casino io. cmq spero che qto sotto ti possa
servire.
il concetto e': voglio sapere cosa c'e' in un .cab.
in attesa di provare una dll messa a punto da altri (che mi devo studiare),
uso il seguente sistema:
1. reindirizzo un extract del cab su un tmp.txt.
2. scandisco il txt e se c'e' qualcosa di sensato (in base a una serie di
prove in console con extract) mi prendo i dati che mi interessano.
la cosa non va su nt (inchioda brutalmente la finestra) ne' con vari tipi di
cab (es. mi sembra quelli di vb6), ma in 9x e coi cab tipo 9x, ie ecc. si',
nb i vari doevents, sleep ecc. -- derivano dal fatto che se non freno il
tutto la routine che deve leggere il file spesso non lo trova (secondo me a
causa della cache di disco, ma non ne sono sicuro).
ciao, hth, pal
MyOut = MainPath & "CabTmp.txt"
Conf = Shell("
command.com
 /c if exist " & MyOut & " del " & MyOut)
DoEvents
MyFileShort = GetShortPathName(Dir1.Path & "\" & Entry)
'Conf = Shell("Command.com /c extract /d " & _
    Dir1.Path & "\" & Entry & " > " & MyOut)
Conf = Shell("Command.com /c extract /d " & _
    Chr(34) & MyFileShort & Chr(34) & " > " & MyOut)
DoEvents
Sleep 3000
InNum = FreeFile
Open MyOut For Input As #InNum
J = 0
Do While Not EOF(InNum)
...

 Approposito, macheèlaperiferica CON???
Console.
L'unico scopo che gli abbia mai trovato stava nel creare un file di testo al
volo senza usare nessun programma con "copy con <Nomefile>". Da qui si entra
in una modalità scrittura dove puoi inserire anche gli invii e i caratteri
speciali. Quando sei stufo di digitare premi CTRL-Z o F6 ed il tuo file è
bello che pronto.
Ciao
*Roby*

Grazie per l'informazione!!!! Non lo sapevo proprio!!!!
Pero' .....
In Unix il piping serve a qualcosa :-)
In DOS lo usi per:
stampare files. Ok e' utile!
usare more!!
salvare l'output su un file!!
Altri usi non ne conosco perche' i programmi non sono fatti per usare il
piping.
E non volevo fare polemica e screditare dos...
Semplicemente mi sembrava di aver capito che la domanda posta non
potesse essere risolta in maniera semplice usando i comandi del DOS!!!
ciao
	maxx
P.S.  W Unix  ;-)
