デバッグクラス
デバッグ情報をファイルまたはIE上に表示させるクラス。
dim dbg set dbg = new DebugClass dbg.SetDebugType(DEBUG_IE) dbg.DebugStart dbg.DebugOut "test" WScript.Sleep 1000 dbg.DebugOut "test2" WScript.Sleep 1000 dbg.DebugOut "test3" msgbox "end" WScript.Quit '########################################################### ' デバッグクラス ' [クラス名] ' DebugClass ' ' [関数] ' ○SetDebugType(type as Integer) ' ・機能 ' デバッグ情報の出力先を指定する。 ' ・引数 ' type:以下の2つから選択。 ' DEBUG_FILE → デバッグ情報をファイルに出力 ' DEBUG_IE → デバッグ情報をIEに出力 ' ・戻り値 ' True:成功 ' False:失敗 ' ' ○SetFileName(path as String) ' ・機能 ' デバッグ情報出力先がファイルの場合に、出力先となるファイル名を指定する。 ' デフォルト値として、"debug.txt"がスクリプトと同じディレクトリに作成される。 ' ・引数 ' path:出力先ファイルのフルパスを指定する。 ' ・戻り値 ' True:成功 ' False:失敗 ' ' ○DebugStart() ' ・機能 ' デバッグ開始のフラグを立てる。 ' デバッグ開始のフラグが立っていない場合はDebugOutコール時に何も処理を行わない。 ' ・戻り値 ' True:成功 ' False:失敗 ' ' ○DebugStop() ' ・機能 ' デバッグ開始のフラグを下ろす。 ' デバッグ開始のフラグが立っていない場合はDebugOutコール時に何も処理を行わない。 ' 現在、必ずTrueを返す。 ' ・戻り値 ' True:成功 ' False:失敗 ' ' ○DebugOut(content as String) ' ・機能 ' デバッグ情報出力先に対して指定したデバッグ情報をアペンドする。 ' デバッグ情報の前には出力時刻が表示される。 ' ・引数 ' content:デバッグ情報の文字列 ' ・戻り値 ' True:成功 ' False:失敗 ' ' [制限事項] ' ・ファイル出力先のディレクトリがない場合などのエラー処理は行っていない。 ' ' Const DebugFile = "Debug.txt" Const DEBUG_FILE = 0 Const DEBUG_IE = 1 Class DebugClass Private ObjDebugIE, ObjDebugFile, DebugType, IsDebugStart, DebugFileName '---------------------------------------------------- ' コンストラクタ Private Sub Class_Initialize Dim CurrentDir DebugType = vbNullString IsDebugStart = False CurrentDir = Replace(WScript.ScriptFullName, WScript.ScriptName, vbNullString) DebugFileName = CurrentDir & DebugFile End Sub '---------------------------------------------------- ' デストラクタ Private Sub Class_Terminate ' ファイル出力の場合は開いているファイルをクローズ If (DebugType = DEBUG_FILE) Then ObjDebugFile.close End If End Sub '---------------------------------------------------- ' デバッグの種類を設定 Public Function SetDebugType(strType) ' デバッグ実行中は種類変更は無効 If (IsDebugStart) Then SetDebugType = False Exit Function End If ' 現在対応しているのはIEとFileのみ If ((strType = DEBUG_FILE) Or (strType = DEBUG_IE)) Then DebugType = strType SetDebugType = True Else SetDebugType = False End If End Function '---------------------------------------------------- ' 出力ファイル名を設定 Function SetFileName(path) DebugFileName = path ChangeObjFile SetFileName = true End Function '---------------------------------------------------- ' 処理を開始する Function DebugStart ' 既に開始されている場合は処理を行わない If (IsDebugStart) Then DebugStart = True Exit Function End If ' デバッグの種類が設定されていない場合はFALSEを返す If ( DebugType = vbNullString) Then IsDebugStart = False DebugStart = False Exit Function End If If (DebugType = DEBUG_IE) Then ' 既にIEが作成されている場合は処理を行わない If (Not IsEmpty(ObjDebugIE)) Then IsDebugStart = True DebugStart = True Exit Function End If ' IEオブジェクトを作成 Set ObjDebugIE = CreateObject("InternetExplorer.Application") ' IEオブジェクトのステータスを設定 With ObjDebugIE .height = 400 .width = 300 .Left = 300 .Top = 300 .AddressBar = false .MenuBar = false .Resizable = true .StatusBar = false .ToolBar = false .Visible = true End With ObjDebugIE.Navigate "about:blank" ' 起動終了まで待機 Do While(ObjDebugIE.Busy) WScript.Sleep 100 Loop ObjDebugIE.Document.Title = "デバッグ出力" ElseIf (DebugType = DEBUG_FILE) Then ' ObjDebugFileを作成 ChangeObjFile End If IsDebugStart = True DebugStart = True End Function '---------------------------------------------------- ' 処理を停止する Function DebugStop IsDebugStart = False DebugStop = True End Function '---------------------------------------------------- ' デバッグ出力を行う Function DebugOut(content) DebugOut = False ' デバッグが開始されていない場合は処理を行わない If (Not IsDebugStart) Then Exit Function End If ' デバッグの種類に応じて出力先を変える If (DebugType = DEBUG_IE) Then ObjDebugIE.Document.Body.InnerHTML = ObjDebugIE.Document.Body.InnerHTML & "[" & Date & " " & Time & "]" & "
" & content & "
" DebugOut = True ElseIf (DebugType = DEBUG_FILE) Then ObjDebugFile.Write "[" & Date & " " & Time & "]" & vbCrLf & content & vbCrLf DebugOut = True End If End Function '---------------------------------------------------- ' ObjDebugFileを変更する Private Function ChangeObjFile ' 既に開いているファイルを閉じる If (Not IsEmpty(ObjDebugFile)) Then ObjDebugFile.close End If Dim fso ' ファイルシステムオブジェクトを作成 Set fso = CreateObject("Scripting.FileSystemObject") '追記書き込みでファイルを開く Set ObjDebugFile = fso.OpenTextFile(DebugFileName, 8, True) End Function End Class '###########################################################
戻る