SilkTest 技術情報(FAQ)


.Netスクリプトで外部プログラムの出力を取得する

SilkTestの.NET スクリプトでは、.NETの提供する機能を使用できます。外部アプリケーションの起動には、System.Diagnostics.Process名前空間のメソッドが使用できますが、標準出力の取得は使用できません。

コマンドからの標準出力を取得するには、一時ファイルに出力をリダイレクトしてから、、ファイルの読み込みを行ってください。また、リダイレクトを正しく動作させるために、実行したいアプリケーションを直接起動するのではなく、コマンドプロンプトを使用します。

次のサンプルプログラムは、 fc.exe を使用して2つのファイルを比較します。

Public Module Main
	Dim _desktop As Desktop = Agent.Desktop

	Public Sub Main()
		Dim command As String = "C:\windows\System32\cmd.exe"
		Dim cmdArg As String = "/C"
		Dim ActualCmd As String = "C:\windows\System32\fc.exe"
		Dim TargetFile1 = "C:\Users\test\doc1.txt"
		Dim TargetFile2 = "C:\Users\test\doc2.txt"
		Dim strOutputFile = System.IO.Path.GetTempFileName()
		Dim Argument As String = cmdArg +" " +  ActualCmd + " " + TargetFile1 + " " + TargetFile2 + " > " + strOutputFile
         
		Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(command,Argument)
		p.WaitForExit()
         
		Dim result As String
		result = System.IO.File.ReadAllText(strOutputFile,System.Text.Encoding.Default)
		Workbench.ResultComment(result)
	End Sub
End Module


起動するプログラムは、変数 command で定義されているcmd.exeです。cmd.exeの引数として、変数 ActualCmd 内に fc.exeを定義します。 実際に起動されるプログラムは

C:\windows\System32\cmd.exe /C C:\windows\System32\fc.exe C:\Users\test\doc1.txt C:\Users\test\doc2.txt > 一時ファイル名

となります。

なお、このようなプログラムは、SilkTest Workbench環境から実行する場合にのみ必要になります。Silk4Netからは、直接アプリケーションを起動し、ストリームとして標準出力を受け取ることができます。


免責事項

ここで紹介したスクリプトは説明のためのサンプルであり、製品の一部ではございません。スクリプトが実際に動作するか、御社業務に適合するかなどに関しまして、一切の保証はございません。 スクリプト、説明、その他すべてについて、無謬性は保障されません。

ここで紹介するスクリプトの一部、もしくは全部について、弊社に断りなく、御社スクリプトの内部に組み込み、そのままご利用頂いても構いません。

本スクリプトの一部もしくは全部を二次的著作物に対して引用する場合、著作権法の精神に基づき、適切な扱いを行ってください。