21. januar 2008 - 21:05Der er
14 kommentarer og 1 løsning
Shell Command med cmd.exe
Hej Alle,
Nu har jeg set mig godt træt på dette problem. Sidder og laver et lille for sjovt program bare for at træne mine skills i Vb.net, Men dette kan jeg simpelthen ikke løse.
Ved hjælp af: Shell("cmd.exe /c net view>comps.txt", AppWinStyle.Hide, True)
Gemmer den så net view indholdet i en tekst fil hvor jeg så senere kan indlæse teksten og bruge det til at lege rundt med i forms.
Her er resten af min kode,
Shell("cmd.exe /c net view>comps.txt", AppWinStyle.Hide, True) Dim ReadFile As New IO.StreamReader("comps.txt") Do Until ReadFile.EndOfStream = True Dim CurrentLine = ReadFile.ReadLine If (Mid(CurrentLine, 1, 2) = "\\") Then mads3 = Replace(Mid(CurrentLine, 1, InStr(CurrentLine, " ")), "\\", "") Combo1.Items.Add(mads3) End If Loop ReadFile.Close()
NU er mit spørgsmål så, er det muligt at jeg kan gøre så den ikke gemmer det i en tekst fil, men eventuelt i et array eller lign.?
Kan ikek finde nogen løsning på google om det. Håber i kan hjælpe mig ..
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Dim p As Process = New Process p.StartInfo.UseShellExecute = false p.StartInfo.RedirectStandardOutput = true p.StartInfo.FileName = "net" p.StartInfo.Arguments = "view" p.Start Dim output As String = p.StandardOutput.ReadToEnd p.WaitForExit
Men jeg vil have skildt dem ad, så jeg kun kan se selve computer navnet, altså PC1, MADS-PC og PC2 istedet for at alt det andet står der, så det kun er linierne der starter med // der skal bruges og at // så fjernes igen bagefter så der kun er selve computer navn tilbage i strengen der indsættet i tekst DropDown'en ..
Dim p As Process = New Process() p.StartInfo.UseShellExecute = False p.StartInfo.RedirectStandardOutput = True p.StartInfo.FileName = "net" p.StartInfo.Arguments = "view" p.Start() Dim output As String = p.StandardOutput.ReadToEnd() p.WaitForExit()
Dim re As Regex = New Regex("\\\\(.*?)$", RegexOptions.Multiline) Dim rem As Match = re.Match(output)
while (rem.Success) { Console.WriteLine(rem.Groups(1).ToString()) rem = rem.NextMatch() }
Jah næsten, bortset fra der var lidt syntax fejl sagde programmet.
Hmm ved nogen af computerne står der en Bemærkning, er det muligt at kan fjerne den på en måde.?
oven over er det gjort sådan her: If (Mid(CurrentLine, 1, 2) = "\\") Then mads3 = Replace(Mid(CurrentLine, 1, InStr(CurrentLine, " ")), "\\", "")
Men det kan jeg ikke få til at passe med det nye , så derfor jeg har brugt dit, men ville gerne ha fjernet alt efter PC1 selvom der er en bemærkning efter.
Et InTopic spørgsmål, kan jeg gøre net vinduet passivt så det ikke åbner.? Altså så brugeren ikke kan se der åbnes en command prompt men at den bare kører i baggrunden og henter det hvor den bagefter laver en MsgBox hvor der står det er klart til brug.?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.