|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Visualizzare Contenuto Finestra Dos in TextBox
Ragazzi tramite questo comando :
Codice:
Dim zipFile As String
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles SAVE.Click
Dim id As Integer = Shell(String.Format("InstallFiles\7z.exe a -t7z -m9=LZMA2 -aoa {0} {1}", zipFile, sourceDir))
Console.WriteLine(id)
Spero che qualcuno mi sappia dare una risposta.....
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Vuoi visualizzare solo il comando o anche l'output?
Nel primo caso la risposta è semplicissima, basta assegnare l'output di String.Format ad una variabile d'appoggio, quindi assegni tale variabile alla proprietà text della textbox e poi la passi alla funzione Shell. Nel secondo caso la cosa si complica un po', fammi sapere cosa ti serve. |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Quote:
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Bene, hai due possibilità:
1) redirigere l'output su un file e leggerlo, ma vedresti l'output solo ad esecuzione conclusa; 2) catturare direttamente lo standard output. Nel tuo caso penso che ti interessi la seconda modalità, puoi prendere spunto da qui: http://stackoverflow.com/questions/8...mand-in-vb-net però invece di utilizzare ReadToEnd che bloccherebbe l'esecuzione fino al termine del comando, crea un timer ed utilizza i metodi Peek e Read. Alla fine ricordati di rilasciare le risorse. |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Quote:
se non chiedo troppo mica potresti metterci una mano tu..dato che sei preparato, e farmi un esempio veloce... mi faresti un grande favore.
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Hai provato l'esempio che ti ho indicato senza fare modifiche? Cos'è che non funziona? Posta il codice che hai scritto.
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Codice:
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
If BinFile1 <> Nothing And sourceDir1 <> Nothing Then
Dim id1 As Integer = Shell(String.Format("InstallFiles\7z.exe a -t7z -m9=LZMA2 -aoa {0} {1}", BinFile1, sourceDir1), 2, True)
Console.WriteLine(id1)
Else
Dim myProcess As New Process()
' Start a new instance of this program but specify the 'spawned' version.
Dim myProcessStartInfo As New ProcessStartInfo("%__CD__%\InstallFiles\7z.exe")
myProcessStartInfo.UseShellExecute = False
myProcessStartInfo.RedirectStandardOutput = True
myProcess.StartInfo = myProcessStartInfo
myProcess.Start()
Dim myStreamReader As StreamReader = myProcess.StandardOutput
' Read the standard output of the spawned process.
Dim myString As String = myStreamReader.ReadLine()
Console.WriteLine(myStreamReader)
myProcess.WaitForExit()
myProcess.Close()
End If
End Sub
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' Ultima modifica di brubaker : 29-10-2014 alle 16:19. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Non mi sembra che tu abbia adattato correttamente il codice...
Codice:
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim comando As String
comando = "InstallFiles\7z.exe"
Dim parametri As String
parametri = String.Format("a -t7z -m9=LZMA2 -aoa {0} {1}", BinFile1, sourceDir1)
Dim myProcess As New Process()
Dim myProcessStartInfo As New ProcessStartInfo(comando, parametri)
myProcessStartInfo.UseShellExecute = False
myProcessStartInfo.RedirectStandardOutput = True
myProcess.StartInfo = myProcessStartInfo
myProcess.Start()
Dim myStreamReader As StreamReader = myProcess.StandardOutput
Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = myProcess.StandardOutput
sOutput = oStreamReader.ReadToEnd()
End Using
Console.WriteLine(sOutput)
End Sub
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Ok diciamo che si smuove qualcosa...la compressione funziona..ma mi esce la finestra dos vuota, con solo il cursore...e sull'intestazione della finestra la percentuale di avanzamento...nella finestra RichTextBox1..nulla
Scusa ..ma il comando Textbox o RichTextBox, lo dobbiamo inserire?????? RichTextBox = ? sOutput
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Intendevo dire che dovresti vedere l'output nella console dell'IDE.
Sostituisci quest'istruzione Console.WriteLine(sOutput)con questa textbox.text = sOutputovviamente al posto di textbox dovrai metterci il nome della tua textbox. |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Ok funziona..ma solo a compressione finita..mi esce l'output della console..durante la compressione non esce nulla...
volevo far scorrere il realtime cosi' come scorre nella finestra Dos..![]() ![]() Meglio visualizzare lo scorrere del comando su entrambi "se possibile" ...mentre comprime, che vedere solo il risultato alla fine....!!!!!!
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' Ultima modifica di brubaker : 29-10-2014 alle 18:15. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Si si, l'avevo capito, è per questo che bisogna mettere il timer, ma ora è tardi, ne riparliamo domani, se qualcuno vuole precedermi si faccia avanti
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Quote:
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Ancora meglio di un timer:
Codice:
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim comando As String
comando = "InstallFiles\7z.exe"
Dim parametri As String
parametri = String.Format("a -t7z -m9=LZMA2 -aoa {0} {1}", BinFile1, sourceDir1)
Dim myProcess As New Process()
AddHandler myProcess.OutputDataReceived, AddressOf myOutputHandler
Dim myProcessStartInfo As New ProcessStartInfo(comando, parametri)
myProcessStartInfo.UseShellExecute = False
myProcessStartInfo.RedirectStandardOutput = True
myProcess.StartInfo = myProcessStartInfo
myProcess.Start()
myProcess.BeginOutputReadLine()
End Sub
Private Shared Sub myOutputHandler(sendingProcess As Object, outLine As DataReceivedEventArgs)
If Not String.IsNullOrEmpty(outLine.Data) Then
textbox.text = textbox.text + outLine.Data
End If
End Sub
|
|
|
|
|
|
#15 |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Non Mi trovo
Codice:
Private Shared Sub myOutputHandler(sendingProcess As Object, outLine As DataReceivedEventArgs)
If Not String.IsNullOrEmpty(outLine.Data) Then
RichTextBox1 = RichTextBox1 + outLine.Data
End If
End Sub
P.S Da premettere che alla fine sono piu' processi : Codice:
Dim comando1 As String
comando1 = "InstallFiles\7z.exe"
Dim parametro1 As String
parametro1 = String.Format("a -t7z -m9=LZMA2 -aoa {0} {1}", BinFile1, sourceDir1)
Dim myProcess As New Process()
Dim myProcessStartInfo As New ProcessStartInfo(comando1, parametro1)
Codice:
Dim comando2 As String
comando2 = "InstallFiles\7z.exe"
Dim parametro2 As String
parametro2 = String.Format("a -t7z -m9=LZMA2 -aoa {0} {1}", BinFile2, sourceDir2)
Dim myProcess As New Process()
Dim myProcessStartInfo As New ProcessStartInfo(comando2, parametro2)
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' Ultima modifica di brubaker : 30-10-2014 alle 14:55. |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Giusto, devi creare una variabile shared ed assegnarle l'istanza di RichTextBox1 per potervi accedere da un metodo shared.
Puoi valorizzare la variabile nell'evento load del form. |
|
|
|
|
|
#17 | |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Quote:
![]() Codice:
Private Shared Sub myOutputHandler(sendingProcess As Object, outLine As DataReceivedEventArgs)
Dim RichTextBox1 As String
If Not String.IsNullOrEmpty(outLine.Data) Then
RichTextBox1 = RichTextBox1 + outLine.Data
End If
End Sub
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' Ultima modifica di brubaker : 30-10-2014 alle 17:41. |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Prova così:
Codice:
Private Shared Sub myOutputHandler(sendingProcess As Object, outLine As DataReceivedEventArgs)
If Not String.IsNullOrEmpty(outLine.Data) Then
Form1.RichTextBox1.AppendText(outLine.Data)
End If
End Sub
|
|
|
|
|
|
#19 | |
|
Member
Iscritto dal: May 2008
Messaggi: 273
|
Quote:
__________________
SCHEDA MADRE* ASROCK EXTREME4GEN3-PROCIO*I7 2600K 4.8GHZ SKVIDEO*GIGABYTE GTX 470 OVERCLOCK 1280MB RAM* 8GB G.SKILL 1866MHZ 10-10-10-27 2N ALIMENTATORE* CORSAIR GS 700 COOLING* NOCTUA D14 HD*SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD W7X64BITEDIT:LE PAZZIE MI RIESCONO SEMPRE BENE.E' CON LE COSE NORMALI CHE HO QUALCHE DIFFICOLTA' |
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Che la finestra "DOS" rimanga nera è normale, l'output deve essere rediretto al programma, non può uscire da entrambe le parti, metti un breakpoint in myOutputHandler e lancia il debug, controlla che venga richiamata e che
outLine.Data contenga l'output. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:26.










W7X64BIT

se non chiedo troppo mica potresti metterci una mano tu..dato che sei preparato, e farmi un esempio veloce... mi faresti un grande favore.
volevo far scorrere il realtime cosi' come scorre nella finestra Dos..










