最速怪談選手権

こんにちは。
まだVBをはじめたばかりのものなのでお手柔らかにお願いします。
ipconfigなのですが、CMDでなく自分で作成したVBの中で結果を表示することはできないのでしょうか?

知っていられる方、よろしくお願いします。

A 回答 (4件)

NO1の方のソースをVB2008用に移植しました。


Sub Test()
Dim WSH As Object
Dim wExec As Object
Dim strCmd As String, Result As String

WSH = CreateObject("WScript.Shell")
strCmd = "ipconfig"
wExec = WSH.Exec("%ComSpec% /c " & strCmd)
Do While wExec.Status = 0
System.Windows.Forms.Application.DoEvents()
Loop
Result = wExec.StdOut.ReadAll
MsgBox(Result)
wExec = Nothing
WSH = Nothing
End Sub

これだと黒いDOS画面が一瞬出てきます。
それが嫌なら、こちらで
一長一短がありますが

sub test2
Dim sFileName As String = System.IO.Path.GetTempFileName()

Dim WSH As Object = CreateObject("WScript.Shell")
Dim strCmd As String = "ipconfig"
WSH.Run("%ComSpec% /c " & strCmd & ">" & sFileName & " 2<&1", 0, True)
WSH = Nothing

Dim ret As String = String.Empty

If IO.File.Exists(sFileName) Then
Using sr As New IO.StreamReader(sFileName, System.Text.Encoding.Default)
ret = sr.ReadToEnd
End Using
IO.File.Delete(sFileName)
End If

MsgBox(ret)
end sub
    • good
    • 0

VBにそれほど経験がなくても何らかの言語ではそれなりに経験があると仮定させてもらうよ。

(Q2237832,2006-06-25)

http://bytes.com/forum/thread267946.html
を参考にしてコンソールアプリケーションとして作ってみた。
'==============================================
Option Explicit On
Option Strict On
Option Compare Binary
Option Infer Off

Class Q4262998A
Shared Sub Main()
Dim process As System.Diagnostics.Process
Dim output As String

process = new Process()
process.StartInfo.UseShellExecute = false
process.StartInfo.RedirectStandardOutput = true
process.StartInfo.FileName = "ipconfig.exe"
process.Start()
process.WaitForExit()

output = process.StandardOutput.ReadToEnd()
System.Console.WriteLine(output)
System.Console.ReadKey(true)
End Sub
End Class
'============================
'ところで,俺はあまりこのコードを好ましく思ってない。
'.NETやJavaの良さの一つとして「移植性」ってのがあると思うのだが
'ipconfig.exeはWindowsにしかないかもしれないからだ。
'==========================
'ipconfigそのものの実行結果は取れないだろうが
'場合によってはSystem.Net.NetworkInformation名前空間のクラスを使うかも。
'解説はしない。
    • good
    • 0

diashun です。


当方の環境は VB6.0(SP6)です。
申し訳ありませんが、VB2008 Express Editionでの実行結果については検証できません。
有識者のご回答を期待しましょう。
    • good
    • 0

diashunです。


WSH(Windows Scripting Host)のWshScriptExecオブジェクトが持つExecメソッドが利用できます。
FormにCommandボタンを貼り、以下の以下のコードを実行してみてください。
ここでは、取得したコンソールの表示内容をメッセージボックスに表示するようにしていますが、どういう形で加工するかは、ご自由です。
なお、WSHについては専門のサイトを参照して下さい。
'ここからコピー***********************************************
Option Explicit
Private Sub Command1_Click()
Dim WSH, wExec, strCmd As String, Result As String
Set WSH = CreateObject("WScript.Shell")
strCmd = "ipconfig"
Set wExec = WSH.Exec("%ComSpec% /c " & strCmd)
Do While wExec.Status = 0
DoEvents
Loop
Result = wExec.StdOut.ReadAll
MsgBox Result
Set wExec = Nothing
Set WSH = Nothing
End Sub
'ここまでコピー***********************************************

この回答への補足

ありがとうございます。
上のコードをコピーした上、ボタンもつくりましたが
エラーが発生して実行できません。
使用しているのは、VB2008 Express Editionです。

補足日時:2008/08/19 22:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!