(for Internet Explorer)
Sub  Fail
テストが失敗したことを、ユーザーやテストスクリプトに知らせて、プログラムを終了します。
エラーが発生したときと同じ動きをします。つまり、Fail の後は実行しません。
(src)
テスト
→ T_SomeTests.vbs # T_TestReport
の T_SampB
Sub  Skip
テストが実行できる状況ではないことを、テストスクリプトに知らせて、プログラムを終了します。
エラーが発生したときと同じ動きをします。つまり、Skip の後は実行しないで、次のテストを実行します。
(src)
テスト
→ T_SomeTests.vbs # T_TestReport
の T_SampC
Sub  Skipped
デバッグなどの理由で、テストの一部を一時的にスキップしたことを、テストスクリプトに
知らせます。 Skipped を呼んだテスト項目は、Pass を呼び出しても Fail します。
このときのエラーメッセージは、次のようになります。
(src)
Pass But Skipped. Cut calling "Skipped" function.
テスト
Sub  ManualTest( TestSymbol as string )
テストが手動テストであることを、テストスクリプトに知らせます。
ManualTest  tests.Symbol
サンプル
参考
(src)
手動テストは最低限にしてください。
ManualTest  "T_Sample1"
参考
Sub  Assert( Condition as boolean )
条件が満たされているかをチェックします。
満たされていなければ、Fail を呼び出します。
If not Condition Then  Fail とほぼ同じですが(違いは下記)、正しい条件文を記述する
ことになるので、ソースの可読性があがります。
また、If 文を使わないので、マルチステートメント(1行に複数の文)が記述できます。
g_debug の設定にかかわらず常にチェックします。
Public Property Let  VarA(x) : Assert x >= 0 : VarA = x : End Property
サンプル:
(src)
If Condition と If not Condition は、完全に反対の関係ではありません。
たとえば、If 4 と If not 4 は、どちらも真です。
完全に反対の関係は次のように複数行になります。
  If Condition Then
  Else
    ***
  End If
よって、正しい条件文を記述することは If Then Fail より Assert の方が簡単になります。
x >= 0
関連
テストが失敗したことを、ユーザーやテストスクリプトに知らせます。
新規にエラーを発生させます。
Sub  AssertExist( Path as string )
ファイルまたはフォルダが存在するかどうかをチェックします。
AssertExist  "settings.txt"
サンプル:
→ vbslib.vbs# [AssertExist]
存在しなければ、エラーメッセージの中にファイルのパスが含まれます。
このため、デバッガを起動しなくてもユーザーが対応できる可能性が高まります。
エラーコードは、E_PathNotFound になります。
逆に、AssertExist では、存在するときにエラーにすることはできません。
"settings.txt"
エラーメッセージのサンプル
<ERROR msg="ファイルまたはフォルダが見つかりません" path="C:\Folder\setting.txt"/>
→ T_File.vbs # [T_AssertExist]
テスト
関連
参考
Test.vbs で共通のファイルの存在チェック
ソース
(src)
Sub  AssertFC( Path1 as string, Path2 as string )
2つのテキストファイルを比較して、異なれば diff ツールを開きます。
テキストファイルの文字コードが自動判定できるなら、文字コードが異なっても
テキストが同じであれば、同じと判定します。
文字コードが異なれば必ず異なると判定するときは、
参考
Path2 のファイルの内容に、% を使った文字列変換関数を使うことができます。
を使ってください。
→ T_Value.vbs # [T_AssertValue]
書きかけ
(src)
書きかけ
テキストファイルの中の相対パスを絶対パスに変換します。
参考
Visual Studio のソリューションをビルドします
Visual Studio のソリューションをクリーンします
Visual Studio のソリューションをリビルドします
関連
→ Module Mixer 3
VisualStudio.vbs
ファイル:
→ T_devenv フォルダ
テスト
Visual Studio 2005〜2010 を操作します。
Sub  devenv_rebuild( SlnPath as string, ConfigName as string )
  Dim  ds_:Set ds_= new CurDirStack
  pushd  "src"
  devenv_rebuild  "sample.sln", "Release"
  popd
サンプル:
【引数】
→ コマンドライン・コンパイル
VisualStudio
モジュール・シンボル:
(src)
  devenv_rebuild  "src\sample_%devenv_ver_name%.sln", "Debug"
Visual Studio のソリューションをリビルドします。
SlnPath
ConfigName
ソリューション・ファイルのパス(.sln)
設定名("Release"など)
ソリューション・ファイルに書かれたバージョン情報を元に、
コンパイラのバージョンを自動的に選択します。
ビルドに失敗したら、E_BuildFail エラーになります。
参考
  devenv_rebuild  "sample.sln", "Release|x64"
Release|x64 が使えるかどうかは、.sln ファイルをテキストファイル
で開いて、そのコンフィグがあるかどうかで判断してください。
テスト
→ T_devenv.vbs # [T_devenv_build]
→ T_devenv.vbs # [T_devenv_build_MultiFolder]
Sub  devenv_build( SlnPath as string, ConfigName as string )
Visual Studio のソリューションをビルドします。
(src)
参考
  Dim  ds_:Set ds_= new CurDirStack
  pushd  "src"
  devenv_clean  "sample.sln"
  popd
Sub  devenv_clean( SlnPath as string )
サンプル:
Visual Studio のソリューションをクリーンします。
【引数】
SlnPath
ソリューション・ファイルのパス(.sln)
(src)
参考
テスト
→ T_devenv.vbs # [T_devenv_build_MultiFolder]
Sub  devenv_upgrade( SlnPath as string, Opt as Empty )
  Dim  ds_:Set ds_= new CurDirStack
  pushd  "src"
  devenv_upgrade  "sample.sln", Empty
  popd
サンプル:
Visual Studio のソリューション・ファイルを新しい Visual Studio 用に変換します。
【引数】
SlnPath
古い Visual Studio のソリューション・ファイルのパス(.sln)
新しいバージョンとは、現在の PC にインストールされている Visual Studio のうち、
最も新しいバージョンのことです。
参考
Opt
Empty または、c.MakeBackup
Opt に、c.MakeBackup を指定すると、変換前のファイルのバックアップを作成します。
ただし、c は、get_VisualStudioConsts の返り値です。
(src)
Function  get_VisualStudioConsts() as Object
VisualStudio.vbs で使う定数の集合。
サンプル:
Dim  c : Set c = get_VisualStudioConsts()
'// c.MakeBackup
(src)
  devenv_rebuild  "src\sample_%devenv_ver_name%.sln", "Release"
devenv_rebuild, devenv_clean などに指定する .sln ファイルのパスには、
%devenv_ver_name% を指定することができます。
インストールされている Visual Studio に応じて、次の文字列に変換されます。
Visual Studio 2010 … "vs2010"
Visual Studio 2008 … "vs2008"
Visual Studio 2005 … "vs2005"
複数の Visual Studio がインストールされているときは、デフォルトでは最新のものが設定されますが、
PC の環境変数や、SetVar で devenv_ver_name を設定することで、バージョンを選択できます。
get_DevEnvObj
echo  "Default: " + GetVar( "%devenv_ver_name%" )
GetVar や env で、devenv_ver_name 環境変数の値を取得するときは、その前に
get_DevEnvObj を実行してください。
(src)
テスト
→ devenv_ver_name 環境変数
関連
devenv_ver_name
Function  IsVisualStudioInstalled( VersionNum as integer, IsExpress as boolean ) as boolean
【引数】
指定したバージョンの Visual Studio がインストールされているかどうかを返します。
VersionNum
バージョン番号
IsExpress
Express 版かどうか
(src)
インストールされているかどうか
返り値
Function  GetVisualStudioVersionNum( VersionString as string ) as integer
Visual Studio のバージョン文字列(例:"vs2008")を数値(例:2008)に変換します。
(src)
Sub  GetSlnFileVersion( SlnPath as string, out_VersionNum as integer,
    out_IsExpress as boolean )
指定のソリューション・ファイルが使える Visual Studio のバージョンを返します。
【引数】
SlnPath
Visual Studio のソリューション・ファイルのパス(.sln)
out_VersionNum
(出力) バージョン番号。 2012, 2010, 2008, 2005
(src)
out_IsExpress
(出力) Express 版かどうか
Visual Studio の *.sln ファイルを読み込みます。
(src)
テスト
→ T_devenv.vbs # [T_devenv_SlnLoad]
してから
にアクセスしてください。
Sub  VisualStudioSlnClass::Load( SlnFilePath as string )
Visual Studio の *.sln ファイルを読み込みます。
【引数】
SlnFilePath
*.sln ファイルのパス
(src)
Dim  VisualStudioSlnClass::Projects as ArrayClass of VisualStudioSlnProjectClass
ソリューションの中にあるプロジェクトの一覧。
してからアクセスしてください。
Class  VisualStudioSlnProjectClass
    Public  ProjectName   '// as string
    Public  RelativePath  '// as string
    Public  ProjectGuid   '// as string
End Class
(src)
参考
Sub  DeleteProjectInVisualStudioSln( SlnFilePath as string, ProjectNameh as string )
Visual Studio の *.sln ファイルの中にある1つのプロジェクトを削除します。
【引数】
SlnFilePath
ProjectNameh
*.sln ファイルのパス
削除するプロジェクトの名前
(src)
テスト
→ T_devenv.vbs # [T_devenv_DeleteProjectsInSln]
プロジェクトの名前は、
から参照できます。
→ レジストリ (VBS)
レジストリのサブキーを列挙します。
指定のレジストリ・キーに入っている値を列挙します。
レジストリ・キーの値を .reg ファイルに出力します。
ファイルをダブルクリックしたときに開くプログラムを設定します。
ファイルの右クリック・メニューの1つの項目を追加します。
レジストリにライトします。
指定のレジストリ・キーか値が存在するかどうかを判定します。
PC の電源を切ります。
レジストリからリードします。
関連
Sub  Shutdown( Operation as string, CountDownTimeSec as integer )
PC の電源を切ります。
【引数】
Operation
CountDownTimeSec
電源の切り方(下記)
電源を切るまでの時間(秒)
ファイル:
vbslib.vbs
SetSuspendState フォルダ
(src)
サンプル:
RunProg  "cscript  main_child.vbs", ""
Shutdown  Empty, Empty
Function  Setting_getShutdownOperation()
  Setting_getShutdownOperation = "PowerOff"
End Function

Function  Setting_getShutdownCountDownTimeSec()
  Setting_getShutdownCountDownTimeSec = 60
End Function
main_child が終了したらデフォルト設定で電源を切る。
30秒後にスリープする
Shutdown  "Sleep", 30
サンプル:
デフォルト設定は、
に下記の関数の定義によって設定します。
関数定義がないときは、"PowerOff", 60 になります。
Shutdown 関数を呼び出すと、カウントダウンを始め、下記のウィンドウが開きます。
ただし、CountDownTimeSec = 0 のときは開きません。
テスト
Operation 引数
次のいずれかの文字列を指定できます。
"PowerOff", "Reboot", "Hibernate", "Sleep", "Standby"
[OK] を押せば、すぐに電源を切ります。
 [キャンセル]を押すか、VBScript の
コンソールを閉じると、電源を切らなく
なります。
→ T_Shutdown_Manually.vbs
スリープするときは、scriptlib\vbslib_XXX\SetSuspendState フォルダが必要です。
Sleep と Standby は同じです。
それぞれの OS のバージョンで行うこと
エラーが発生しても、電源を切るには、
RunProg などで、メイン処理を行う子プロセス
を起動して、子プロセスが終了する(RunProg から戻る)まで待ってから、Shutdown
を実行してください。 こうすれば、Ctrl-C や閉じるボタンが押されても電源が切れます。
通常 60秒後にシャットダウンします。
サンプル
音楽を鳴らしながら、60秒待ち、スリープする
g_CommandPrompt = 1   '// この行だけ SetupVbslibParameters に記述

Sub  main()
  Play  "******.mp3"

  Dim  e  ' as Err2
  If TryStart(e) Then  On Error Resume Next
    Shutdown "Sleep", 60
  If TryEnd Then  On Error GoTo 0
  e.Clear  '// ユーザ・キャンセルしてもウィンドウを閉じるため
End Sub
このスクリプトを、Windows のタスクに登録しておくと、1時間ごとにスリープに入ることを
試みるようなことができます。
参考
Windows 7 では、地デジの予約録画などによる、
から、
Shutdown "Sleep" してもスリープ状態になりません。
wakeonlan <電源を入れるPCのMACアドレス>
まず、電源を入れる PC の準備をします。
/usr/bin/net rpc -S <マシン名> -U <アカウント名>%<パスワード> shutdown -t 10
<アカウント名> は、<ユーザ名> または <ドメイン名>\\<ユーザ名>
電源を落とすには、リモート・デスクトップ経由で、コマンドプロンプトから
を実行するか、無停電 Linux サーバー
から下記のコマンドを入力してください。
Windows XP の場合、
[ スタート > マイコンピューター ] を右クリック [ プロパティ > ハードウェア > デバイス
マネージャ ] から、ネットワーク アダプタの子ノードの中から該当するアダプタを
右クリック [ プロパティ ]、[ 詳細設定 > Wake Up Capabilities ] を [ Magic Packet ]、
[ 電源の管理 > このデバイスで、コンピュータのスタンバイ状態を解除できるように
する ] にチェックします。
PC の電源を切ってから、再度電源を入れてすぐに BIOS の設定画面を開き(機種
依存です。例:F2を押す)、Wake On LAN を有効にします(例:Power > Automatic
Power On > Wake on LAN = Primary)
『無停電の Linux サーバー』 にログインして、wakeonlan コマンドを実行します。
なお、MAC アドレスは、コマンドプロンプトから ipconfig /all を実行すると分かります。
./wakeonlan 11:22:33:44:55:66
例:
shutdown /s /f
を実行するか、
IsScreenSaverRunning
(src)
Function  IsScreenSaverRunning() as boolean
スクリーンセーバーが動いているかどうかを返します。
→ T_ScreenSaver_Manually.vbs # [T_IsScreenSaverRunning]
テスト
Sub  RegEnumKeys( Path as string, out_Keys as array of string, Opt as integer )
レジストリのサブキーを列挙します。
【引数】
Path
out_Keys
レジストリのキーのパス
(出力) サブキーのフルパスの配列。 末尾に \ は無い
ファイル:
System.vbs
  Dim  keys

  RegEnumKeys  "HKEY_CURRENT_USER\Software\_Test", keys, Empty

'// keys(0) = "HKEY_CURRENT_USER\Software\_Test\Sub"
'// keys(1) = "HKEY_CURRENT_USER\Software\_Test\Sub2"
サンプル:
Opt
オプション。 Empty か F_SubFolder
(src)
サブキーが無いときは、UBound( out_Keys ) = -1 になります。
テスト
→ T_Reg.vbs # T_Reg1
Path の末尾に \ があってもなくても、キー(フォルダーのようなもの)を指定したことに
なります。