DOBON.NET DOBON.NETプログラミング掲示板過去ログ

コンソールアウトされたデータをVBで取得する

分類:[VB6以前]

現在、DOSで出力された(コンソールアウト?)されたデータをVBで取得する
プログラムを考えていますがいろいろ調べてもできません。
よろしければ、ご教授願います。
※一度、ファイルに出力して、読み取ればいいのですが。。それはあまり行いたくありません。
こんばんは、ピラルクです。

http://support.microsoft.com/default.aspx?scid=kb;ja;JP239588

の要領でやればOKかも。
レスありがとうございます。
参照させてもらいましたが、理解できませんでした・・汗
自分の質問の説明不足ではないかと思い。再度記入させてもらいます。

@VBよりDOSを実行しコマンドを打ちます
Aそのコマンドで得られた結果をVB上で取得し
VBの処理を切り分けたい。
といったものです。
ジオギアさん、こんにちは

 以前に、nbtstat -A xxx.xxx.xxx.xxx の結果を得るコードを書いた事があります。
 参考になりますでしょうか?
(半角空白2つを全角スペースにしてあります)

'-----#function#--------------------------------------------------------
' #名称  :: Public Function strGetResult
' #概要  :: nbtstat -A 実行
'
' return  :: 結果文字列
'---------------------------------------------------------#function#----
Public Function strGetResult(ByVal strIP$) As String

  Dim pFname$, pNow$
  Dim pStr$
  Dim sa As SECURITY_ATTRIBUTES
  Dim pi As PROCESS_INFORMATION
  Dim si As STARTUPINFO
  Dim nRet&, nRead&
  Dim ecode&, nLen$
  Dim hRead&, hWrite&
  Dim pPath$, pCom$
  Dim pAll$
  
  sa.nLength = LenB(sa)
  sa.bInheritHandle = 1
  nRet = CreatePipe(hRead, hWrite, sa, 0)
  If (nRet <> 1) Then
    strGetResult = ""
    Exit Function
  End If
  
  si.cb = LenB(si)
  si.dwFlags = STARTF_USESTDHANDLES
  si.hStdOutput = hWrite
  si.hStdInput = -1
  si.hStdError = -1
  
  pPath = String(MAX_PATH, 0)
  GetSystemDirectory pPath, MAX_PATH
  pCom = AnsiLeftB(pPath, lstrlen(pPath)) & "\nbtstat -A " & strIP
  
  nRet = CreateProcess(vbNullString, _
    pCom, _
    sa, _
    sa, _
    1, _
    DETACHED_PROCESS, _
    vbNullString, _
    vbNullString, _
    si, _
    pi)

  
  GetExitCodeProcess pi.hProcess, ecode ' 終了コード取得
  CloseHandle pi.hThread ' スレッドハンドルを閉じる
  CloseHandle pi.hProcess ' プロセスハンドルを閉じる

  CloseHandle hWrite
  
  pAll = ""
  Do
    pStr = String(256, 0)
    nRet = ReadFile(hRead, pStr, 255, nRead, 0)
    If (nRet <> 1) Then
      Exit Do
    End If
    nLen = lstrlen(pStr)
    pAll = pAll & AnsiLeftB(pStr, nLen)
  Loop
  
  CloseHandle hRead
  
  strGetResult = pAll
  
End Function


Function AnsiLeftB(ByVal StrArg As String, ByVal arg1 As Long) As String

  AnsiLeftB = AnsiStrConv(LeftB(AnsiStrConv(StrArg, vbFromUnicode) _
, arg1), vbUnicode)
End Function

Public Function AnsiStrConv(StrArg, flag)

  If (StrArg = "") Then
    AnsiStrConv = ""
  Else
    AnsiStrConv = StrConv(StrArg, flag)
  End If

End Function

DOBON.NET | プログラミング道 | プログラミング掲示板