Gå til innhold

Command Prompt tekst til "form"?


Anbefalte innlegg

Vel, holder fortsatt på med å lære meg VB.NET, og driver å lager et lite program som, ved å trykke på en knapp, utfører en kommando i cmd.exe (command prompten i windows). Så vil jeg gjerne at den teksten som blir generert i command prompten blir sent til selve programmet, en tekst boks i form'et for eksempel..

 

   Dim WSHShell, rcmd, MyBox, p1, q1
   Dim jobfunc
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       WSHShell = CreateObject("WScript.Shell")
       rcmd = "chkdsk"
       WSHShell.Run(rcmd)

   End Sub

 

Er det mulig eller er alt bare feil? :)

 

Takk

Lenke til kommentar
Videoannonse
Annonse

Jeg vil tro det enkleste er å kjøre programmet med vanlig shell eller System.Diagnistic.Start, slik:

Shell(chkdsk >>tekstfil.txt)

slik at man etterpå kan hente inn tekstfilen i programmet (StreamReader). :)

 

 

EDIT: Leif...

Endret av moskus
Lenke til kommentar

Sånn til informasjon, så må du nok ha med " i shell-funksjonen din.

 

Hvis du skal løse det som moskus her foreslår, så blir det

Shell("chdisk >> filename.txt", AppWinStyle.Hide)

 

AppWinStyle.Hide for at cmd-vinduet ikke skal vises :)

 

Så kan du jo bruke File-namespacet til å slette filen etterpå. Kan være greit om du ikke vil ha masse temporære filer liggende rundt :p Det er en veldig enkel løsning, og ikke særlig elegant, men den fungerer.

 

Likevel er det vel anbefalt å bruke full filepath til filen som skal kjøres. Eks: Shell("C:\Windows\system32\calc.exe"). Her kan man jo bruke Environment-klassen for å finne frem til systemkatalogen, for ikke å programmere denne statisk :)

 

(System.Diagnostic.Start eksisterer ikke så langt jeg kan se)

Lenke til kommentar
Sånn til informasjon, så må du nok ha med " i shell-funksjonen din.

 

(System.Diagnostic.Start eksisterer ikke så langt jeg kan se)

5156098[/snapback]

 

Riktig. " må med. :)

 

System.Diagnostic.Start ekstisterer ikke, men System.Diagnostics.Process.Start("path eller filnavn") eksisterer. :)

Lenke til kommentar

Private outpt As System.Threading.Thread
Private na As System.Diagnostics.Process
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click

 Dim si As New System.Diagnostics.ProcessStartInfo("ipconfig.exe")
 si.CreateNoWindow = True
 si.RedirectStandardOutput = True
 si.UseShellExecute = False
 na = System.Diagnostics.Process.Start(si)
 outpt = New System.Threading.Thread(AddressOf WriteOutput)
 outpt.Start()
End Sub

Private Sub WriteOutput()
 Do While Not na.HasExited
 	TextBox1.Text &= na.StandardOutput.ReadToEnd()
 Loop
End Sub

 

Sånn skal det gjøres :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...