Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Eseguire comandi in dos

Dopo aver aperto una finestra dos con:
Shell ("c:\
command.com
")
Come faccio a spedire comandi (ad esempio "cd\" o "dir") alla finestra Dos?
Ringrazio tutti
Buona Pasqua
Alessandro
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 80,000 Newsgroups - 16 Different Servers! =-----

 Dos?
Non lo so. Ma potresti "spedirli" *contemporaneamente*... Cosi', per
esempio:
Let IDProcess& _
  = Shell(Environ("comspec") & " /k cd \", vbNormalFocus)
--
Ciao.
Maurizio

 Come faccio a spedire comandi (ad esempio "cd\" o "dir") alla finestra Dos?
Puoi usare uno SporcoTrucco®: Copia i dati in una stringa nella clipboard,
compreso l'invio, poi la incolli nel programma DOS. Per incollare in DOS puoi
usare SendKeys.
Dichiara questo nel tuo prog:
____________________
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' questa blocca ill tuo programma per un tempo di N millisecondi
Dim IdDellaShell As Double ' valore che verrà restituito dalla funzione shell
' e che userai nell'AppActivate
____________________
'chiami la shell in questo modo
____________________
IdDellaShell = Shell("c:\
command.com
", vbNormalNoFocus)
Sleep 2000 ' forse è troppo, ma serve per dare tempo alla shell di partire
____________________
Dichiari questa routine:
____________________
Sub InviaAllaShell(IdShell As Double, StringaDaInviare As String)
    ' Siccome lanci tu il programma DOS con Shell, puoi usare l'ID che ti
    ' ritorna per l'AppActivate
    ' In alternativa si può usare il nome del programma, come
    ' NomeProgramma = "Prompt di MS-DOS" ' <---questo deve essere il testo
    ' preciso del titolo della finestra DOS, comprese maiuscole e minuscole.
    Clipboard.Clear ' svuota la clipboard
    Clipboard.SetText StringaDaInviare ' ci mette la stringa
    AppActivate IdShell, False ' attiva la finestra DOS
    DoEvents: DoEvents
    DoEvents: DoEvents ' dai tempo al sistema di visualizzarla, nel caso...
    SendKeys "% mi", True ' percento(ALT) - spazio - M(odifica) - I(ncolla)
    Sleep 200 ' serve a dare il tempo alla finestra DOS
    ' di aprire e richiudere il menù Modifica-Incolla
End Sub
___________________
...e la richiami quando ti serve secondo questo esempio:
____________________
    Me.WindowState = vbMinimized
    InviaAllaShell IdDellaShell, "cd \" & vbCr
    Sleep 1000 ' dai il tempo alla finestra dos di visualizzare quello che deve.
    ' per esempio un dir /s su un disco pieno ci metterà un certo tempo...
    InviaAllaShell IdDellaShell, "dir /a:h /o:d" & vbCr
    ' solo un esempio di uso, mostra i file nascosti ordinati per data
    Sleep 1000
    InviaAllaShell IdDellaShell, "dir /a:s /o:s" & vbCr
    ' mostra i file di sistema, ordinati per dimensione
____________________
Fammi sapere se ti va bene.
Buona Pasqua, Gaetano.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com

Tutto funziona, Ma se io setto la shell come hide, non funziona, dandomi
l'errore 5!
Paperino <non...@lo.dico> wrote in message
8dt424$33oi$1...@stargate1.inet.it...



 Tutto funziona, Ma se io setto la shell come hide, non funziona, dandomi l'errore 5!
Questo è inevitabile, credo. Che io sappia, puoi incollare dati solo sulla finestra attiva,
in Windows, e per essere attiva una finestra deve essere visibile. In ogni caso, questo
vale di sicuro per SendKeys.
Se spieghi qual è il problema, cioè cosa devi fare, magari si può trovare un'altra
strada.
Bye, G.