プロパティ名:
ScriptingHost
概要:
実行するスクリプトアプリケーション
詳細:
実行するスクリプトアプリケーションを参照・指定することができます。
初期値は、WScriptです。
TheCyberTowerOfBabel
2011年6月26日日曜日
CmdLibのメソッド
メソッド:
validateDateTime
概要:
WMIで認識できる日付型文字列のチェック
構文:
validateDateTime(strDateTime)
パラメータ:
strDateTime...文字列
詳細:
strDateTimeに指定した文字列が、WMIで認識できる日付型として妥当かどうかをチェックします。
妥当であればTrue、そうでなければFalseを返します。
メソッド:
changeToWMIDateTime
概要:
WMIで認識できる日付型文字列に整形
構文:
changeToWMIDateTime(strDateTime, strTimeZone)
パラメータ:
strDateTime...日付型文字列
strTimeZone...タイムゾーン
詳細:
strDateTimeに指定した日付型文字列を、WMIで認識できる日付型に整形して返します。
strTimeZoneに指定した文字列は、整形した日付型文字列の最後尾に付加されます。
メソッド:
matchPattern
概要:
正規表現によるパターンチェックを行う
構文:
strMatchPattern(strMatchPattern, strPhrase)
パラメータ:
strMatchPattern...正規表現パターン
strPhrase...文字列
詳細:
strMatchPatternに指定した正規表現パターンに、strPhraseに指定した文字列が合致しているかどうかをチェックします。
合致した場合は、合致した件数を返します。何も合致しない場合は、0を返します。
メソッド:
vbPrintf
概要:
パラメータ付きのメッセージを表示
構文:
vbPrintf(strPhrase, args)
パラメータ:
strPhrase...表示するメッセージ(%1, %2, ...の形式でメッセージにパラメータを指定可能)
args...strPhraseにパラメータを指定した場合、そのパラメータの値
詳細:
strPhraseには、表示するメッセージを指定します。
%1, %2, %3, ...のようにパラメータを指定することができます。
strPharaseにパラメータを指定した場合、そのパラメータに渡す値を配列で指定します。
メソッド:
getPassword
概要:
パスワードを表示
構文:
getPassword()
詳細:※
使い方がわからない。
getPassword()メソッドを実行すると、「パスワードを入力してください」のメッセージが表示される。
InputBoxではなくメッセージボックスのため、パスワードを入力することができない。
また、「OK」ボタンしかない。
「OK」ボタンをクリックすると、「処理しています…」のメッセージボックスが表示される。
このメッセージボックスも、「OK」ボタンしかクリックすることができない。
戻り値も空。
メソッド:
wmiConnect
概要:
WMIに接続する
構文:
wmiConnect(strNameSpace, strUserName, strPassword, strServer, blnLocalConnection, objService)
パラメータ:
strNameSpace...名前空間
strUserName...ユーザー名
strPassword...パスワード
strServer...ホスト名
blnLocalConnection...ローカル接続ならTrue、そうでなければFalse(参照渡し)
objService...サービスのインスタンス(参照渡し)
詳細:
指定した条件でWMIに接続し、成功したらTrue、失敗したらFalseを返します。
strNameSpaceには、接続するWMIの名前空間を指定します。
strUserNameに接続するユーザー名、strPasswordに接続ユーザーのパスワード、strServerに接続するホスト名を指定します。
blnLocalConnectionには、ローカル接続であればTrue、そうでなければFalseを指定します。
指定したユーザー名、パスワード、ホスト名でWMIに接続できない場合、ローカルマシンであれば現在の接続ユーザー情報で再接続を試みます。
この時点でWMIに接続できた場合、blnLocalConnectionは必ずTrueを返します。
objServiceは、接続に成功した場合はサービスのインスタンスを返します。
メソッド:
getHostName
概要:
ホスト名を返す
構文:
getHostName(ObjService)
パラメータ:
ObjService...サービスのインスタンス
詳細:
ObjServiceに指定したサービスからホスト名を返します。
ホスト名を取得できなかった場合は、文字列"N/A"を返します。
メソッド:
getUserName
概要:
ユーザー名を返す
構文:
getUserName(ObjService)
パラメータ:
ObjService...サービスのインスタンス
詳細:
ObjServiceに指定したサービスからユーザー名を返します。
ユーザー名を取得できなかった場合は、文字列"N/A"を返します。
メソッド:
getDomainName
概要:
ドメイン名を返す
構文:
getDomainName(ObjeService)
パラメータ:
ObjService...サービスのインスタンス
詳細:
ObjServiceに指定したサービスからドメイン名を返します。
ドメイン名を取得できなかった場合は、文字列"N/A"を返します。
メソッド:
getArguments
概要:
パラメータに指定した配列とインデックスから該当する値を返す
構文:
getArguments(StrVarName, strVar, intArglter, blnAllowNegativeValues)
パラメータ:
StrVarName...エラーメッセージに出力するパラメータ(表示したい配列のフィールド名など)
strVar...指定したインデックスの値(参照渡し)
intArglter...配列のインデックス(参照渡し)
blnAllowNegativeValues...数値チェックを行う場合は、True、そうでなければFalseを指定
詳細:
StrVarNameは、指定した内容にエラーがあった場合、エラーメッセージに付加する文字列を指定します。
たとえば、表示したい配列のフィールド名などを指定します。
strVarには、指定したインデックスに存在した値を返します。
intArglterには、配列のインデックスを指定します。
blnAllowNegativeValuesには、数値チェックを行う場合はTrue、数値チェックを行わない場合はFalseを指定します。
指定した条件より配列から値を取得できた場合はTrue、指定した条件に誤りがあった場合はFalseを返します。
※
うまく動かない。
エラーメッセージは表示されないものの、戻り値はFalseとなる。
メソッド:
checkScript
概要:
実行されているスクリプトの種類を返す
構文:
checkScript()
詳細:
実行されているスクリプトの種類を返します。
cscriptなら2を、それ以外なら0を返します。
メソッド:
LengthinBytes
概要:
指定した文字列のバイト数を返す
構文:
LengthinBytes(strString)
パラメータ:
strString...文字列
概要:
strStringには、バイト数を調査する文字列を指定します。
メソッド:
trapError
概要:
エラーメッセージを表示する
構文:
trapError(strIn)
パラメータ:
strIn...任意の文字列
詳細:
エラーが発生している場合、エラーに該当するメッセージを表示して戻り値にTrueを返します。
エラーが発生していない場合は、戻り値にFalseを返します。
strInには、呼び出し元のメソッド名などの任意の文字列を指定します。
メソッド:
packString
概要:
文字列に空白を付加する
構文:
packString(strString, intWidth)
パラメータ:
strString...文字列
intWidth...バイト数
詳細:
strStringに指定した文字列に対し、intWidthに指定したバイト数に達するまで空白を付加します。
strStringに指定した文字列がすでにintWidthに指定したバイト数以上の場合、そのバイト数までの文字列をカットします。
メソッド:
getMaxStringLen
概要:
配列の中から最も長い文字列のバイト数を返す
構文:
getMaxStringLen(arrStrings)
構文:
getMaxStringLen(arrStrings)
パラメータ:
arrStrings...文字列型配列
詳細:
arrStringsに指定した文字列型配列のなかから最も長い文字列を検索し、そのバイト数を返します。
メソッド:
showResults
概要:
2次元配列の内容を指定したフォーマットで返す
構文:
showResults(arrHeader, arrResultsArray, arrMaxLength, strFormat, blnPrintHeader, arrBinHide)
パラメータ:
arrHeader...配列(ヘッダー)
arrResultsArray...配列(データ)
arrMaxLength...配列の最大長
strFormat...出力形式("LIST", "CSV", "TABLE")
blnPrintHeader...ヘッダー表示有無
arrBinHide...0以外を指定したインデックスは非表示にする
詳細:
arrHeaderには、配列のヘッダーを指定します。
arrResultsArrayには、内容を表示したい2次元配列を指定します。
arrMaxLengthには、各配列の表示時の最大長を指定します。
strFormatには、出力形式を指定します。
指定できる出力形式は、"LIST", "CSV", "TABLE"の3パターンです。
それぞれの出力サンプルは、次のとおりです。
LISTの場合
コード: 100
名前: テスト1
日付: 2010/10/01
コード: 200
名前: テスト2
日付: 2010/10/02
コード: 300
名前: テスト3
日付: 2010/10/03
CSVの場合
"コード","名前","日付"
"100","テスト1","2010/10/01"
"200","テスト2","2010/10/02"
"300","テスト3","2010/10/03"
TABLEの場合
コード 名前 日付
----------- ----------- -----------
100 テスト1 2010/10/01
200 テスト2 2010/10/02
300 テスト3 2010/10/03
blnPrintHeaderには、ヘッダーを表示するかしないかを指定します。
ヘッダーを表示する場合はTrue、表示しない場合はFalseを指定します。
フォーマットが"CSV"もしくは"TABLE"にした場合のみ、効果があります。
arrBlnHideにて、0以外を指定したインデックスは非表示となります。
validateDateTime
概要:
WMIで認識できる日付型文字列のチェック
構文:
validateDateTime(strDateTime)
パラメータ:
strDateTime...文字列
詳細:
strDateTimeに指定した文字列が、WMIで認識できる日付型として妥当かどうかをチェックします。
妥当であればTrue、そうでなければFalseを返します。
メソッド:
changeToWMIDateTime
概要:
WMIで認識できる日付型文字列に整形
構文:
changeToWMIDateTime(strDateTime, strTimeZone)
パラメータ:
strDateTime...日付型文字列
strTimeZone...タイムゾーン
詳細:
strDateTimeに指定した日付型文字列を、WMIで認識できる日付型に整形して返します。
strTimeZoneに指定した文字列は、整形した日付型文字列の最後尾に付加されます。
メソッド:
matchPattern
概要:
正規表現によるパターンチェックを行う
構文:
strMatchPattern(strMatchPattern, strPhrase)
パラメータ:
strMatchPattern...正規表現パターン
strPhrase...文字列
詳細:
strMatchPatternに指定した正規表現パターンに、strPhraseに指定した文字列が合致しているかどうかをチェックします。
合致した場合は、合致した件数を返します。何も合致しない場合は、0を返します。
メソッド:
vbPrintf
概要:
パラメータ付きのメッセージを表示
構文:
vbPrintf(strPhrase, args)
パラメータ:
strPhrase...表示するメッセージ(%1, %2, ...の形式でメッセージにパラメータを指定可能)
args...strPhraseにパラメータを指定した場合、そのパラメータの値
詳細:
strPhraseには、表示するメッセージを指定します。
%1, %2, %3, ...のようにパラメータを指定することができます。
strPharaseにパラメータを指定した場合、そのパラメータに渡す値を配列で指定します。
メソッド:
getPassword
概要:
パスワードを表示
構文:
getPassword()
詳細:※
使い方がわからない。
getPassword()メソッドを実行すると、「パスワードを入力してください」のメッセージが表示される。
InputBoxではなくメッセージボックスのため、パスワードを入力することができない。
また、「OK」ボタンしかない。
「OK」ボタンをクリックすると、「処理しています…」のメッセージボックスが表示される。
このメッセージボックスも、「OK」ボタンしかクリックすることができない。
戻り値も空。
メソッド:
wmiConnect
概要:
WMIに接続する
構文:
wmiConnect(strNameSpace, strUserName, strPassword, strServer, blnLocalConnection, objService)
パラメータ:
strNameSpace...名前空間
strUserName...ユーザー名
strPassword...パスワード
strServer...ホスト名
blnLocalConnection...ローカル接続ならTrue、そうでなければFalse(参照渡し)
objService...サービスのインスタンス(参照渡し)
詳細:
指定した条件でWMIに接続し、成功したらTrue、失敗したらFalseを返します。
strNameSpaceには、接続するWMIの名前空間を指定します。
strUserNameに接続するユーザー名、strPasswordに接続ユーザーのパスワード、strServerに接続するホスト名を指定します。
blnLocalConnectionには、ローカル接続であればTrue、そうでなければFalseを指定します。
指定したユーザー名、パスワード、ホスト名でWMIに接続できない場合、ローカルマシンであれば現在の接続ユーザー情報で再接続を試みます。
この時点でWMIに接続できた場合、blnLocalConnectionは必ずTrueを返します。
objServiceは、接続に成功した場合はサービスのインスタンスを返します。
メソッド:
getHostName
概要:
ホスト名を返す
構文:
getHostName(ObjService)
パラメータ:
ObjService...サービスのインスタンス
詳細:
ObjServiceに指定したサービスからホスト名を返します。
ホスト名を取得できなかった場合は、文字列"N/A"を返します。
メソッド:
getUserName
概要:
ユーザー名を返す
構文:
getUserName(ObjService)
パラメータ:
ObjService...サービスのインスタンス
詳細:
ObjServiceに指定したサービスからユーザー名を返します。
ユーザー名を取得できなかった場合は、文字列"N/A"を返します。
メソッド:
getDomainName
概要:
ドメイン名を返す
構文:
getDomainName(ObjeService)
パラメータ:
ObjService...サービスのインスタンス
詳細:
ObjServiceに指定したサービスからドメイン名を返します。
ドメイン名を取得できなかった場合は、文字列"N/A"を返します。
メソッド:
getArguments
概要:
パラメータに指定した配列とインデックスから該当する値を返す
構文:
getArguments(StrVarName, strVar, intArglter, blnAllowNegativeValues)
パラメータ:
StrVarName...エラーメッセージに出力するパラメータ(表示したい配列のフィールド名など)
strVar...指定したインデックスの値(参照渡し)
intArglter...配列のインデックス(参照渡し)
blnAllowNegativeValues...数値チェックを行う場合は、True、そうでなければFalseを指定
詳細:
StrVarNameは、指定した内容にエラーがあった場合、エラーメッセージに付加する文字列を指定します。
たとえば、表示したい配列のフィールド名などを指定します。
strVarには、指定したインデックスに存在した値を返します。
intArglterには、配列のインデックスを指定します。
blnAllowNegativeValuesには、数値チェックを行う場合はTrue、数値チェックを行わない場合はFalseを指定します。
指定した条件より配列から値を取得できた場合はTrue、指定した条件に誤りがあった場合はFalseを返します。
※
うまく動かない。
エラーメッセージは表示されないものの、戻り値はFalseとなる。
メソッド:
checkScript
概要:
実行されているスクリプトの種類を返す
構文:
checkScript()
詳細:
実行されているスクリプトの種類を返します。
cscriptなら2を、それ以外なら0を返します。
メソッド:
LengthinBytes
概要:
指定した文字列のバイト数を返す
構文:
LengthinBytes(strString)
パラメータ:
strString...文字列
概要:
strStringには、バイト数を調査する文字列を指定します。
メソッド:
trapError
概要:
エラーメッセージを表示する
構文:
trapError(strIn)
パラメータ:
strIn...任意の文字列
詳細:
エラーが発生している場合、エラーに該当するメッセージを表示して戻り値にTrueを返します。
エラーが発生していない場合は、戻り値にFalseを返します。
strInには、呼び出し元のメソッド名などの任意の文字列を指定します。
メソッド:
packString
概要:
文字列に空白を付加する
構文:
packString(strString, intWidth)
パラメータ:
strString...文字列
intWidth...バイト数
詳細:
strStringに指定した文字列に対し、intWidthに指定したバイト数に達するまで空白を付加します。
strStringに指定した文字列がすでにintWidthに指定したバイト数以上の場合、そのバイト数までの文字列をカットします。
メソッド:
getMaxStringLen
概要:
配列の中から最も長い文字列のバイト数を返す
構文:
getMaxStringLen(arrStrings)
構文:
getMaxStringLen(arrStrings)
パラメータ:
arrStrings...文字列型配列
詳細:
arrStringsに指定した文字列型配列のなかから最も長い文字列を検索し、そのバイト数を返します。
メソッド:
showResults
概要:
2次元配列の内容を指定したフォーマットで返す
構文:
showResults(arrHeader, arrResultsArray, arrMaxLength, strFormat, blnPrintHeader, arrBinHide)
パラメータ:
arrHeader...配列(ヘッダー)
arrResultsArray...配列(データ)
arrMaxLength...配列の最大長
strFormat...出力形式("LIST", "CSV", "TABLE")
blnPrintHeader...ヘッダー表示有無
arrBinHide...0以外を指定したインデックスは非表示にする
詳細:
arrHeaderには、配列のヘッダーを指定します。
arrResultsArrayには、内容を表示したい2次元配列を指定します。
arrMaxLengthには、各配列の表示時の最大長を指定します。
strFormatには、出力形式を指定します。
指定できる出力形式は、"LIST", "CSV", "TABLE"の3パターンです。
それぞれの出力サンプルは、次のとおりです。
LISTの場合
コード: 100
名前: テスト1
日付: 2010/10/01
コード: 200
名前: テスト2
日付: 2010/10/02
コード: 300
名前: テスト3
日付: 2010/10/03
CSVの場合
"コード","名前","日付"
"100","テスト1","2010/10/01"
"200","テスト2","2010/10/02"
"300","テスト3","2010/10/03"
TABLEの場合
コード 名前 日付
----------- ----------- -----------
100 テスト1 2010/10/01
200 テスト2 2010/10/02
300 テスト3 2010/10/03
blnPrintHeaderには、ヘッダーを表示するかしないかを指定します。
ヘッダーを表示する場合はTrue、表示しない場合はFalseを指定します。
フォーマットが"CSV"もしくは"TABLE"にした場合のみ、効果があります。
arrBlnHideにて、0以外を指定したインデックスは非表示となります。
2011年6月2日木曜日
Microsoft.CmdLibについて
Microsoft.CmdLib
対象OS…WindowsXP
概要…VBS Library
パス…C:\WINDOWS\system32\cmdlib.wsc
全メソッド…
checkScript
vbPrintf
getHostName
getUserName
getDomainName
LengthinBytes
getPassword
trapError
getArguments
wmiConnect
packString
getMaxStringLen
showResults
validateDateTime
changeToWMIDateTime
matchPattern
全プロパティ…
ScriptingHost
その他…
拡張子(.wsc)。Windows Script Componentの略。
実体は、XMLファイル。UTF-8形式で保存されている。
対象OS…WindowsXP
概要…VBS Library
パス…C:\WINDOWS\system32\cmdlib.wsc
全メソッド…
checkScript
vbPrintf
getHostName
getUserName
getDomainName
LengthinBytes
getPassword
trapError
getArguments
wmiConnect
packString
getMaxStringLen
showResults
validateDateTime
changeToWMIDateTime
matchPattern
全プロパティ…
ScriptingHost
その他…
拡張子(.wsc)。Windows Script Componentの略。
実体は、XMLファイル。UTF-8形式で保存されている。
2011年5月29日日曜日
リモートマシンで共有ファイルを開かせる
このシステムのしくみ
サーバー上で実行するのは、Facade.vbs。
Facade.vbsより、メインのExcSnd.vbsを実行する。
Facade.vbsでは、他にもいくつかの共通モジュールを使用している。
それらの共通モジュールは、いかちソフトウェアのVBScriptサイトから入手できる。
ExcSnd.vbs
Facade.vbs
サーバーにてExcSnd.vbsを実行すると、ExcSnd.vbsのプログラム上でリモートマシンに接続し、サーバー上のファイルを開かせる。
このサンプルでは、サーバー上にあるExcSnd.exeという音を出すファイルをリモートマシン上で実行させるためのVBScript。サーバー上で実行するのは、Facade.vbs。
Facade.vbsより、メインのExcSnd.vbsを実行する。
Facade.vbsでは、他にもいくつかの共通モジュールを使用している。
それらの共通モジュールは、いかちソフトウェアのVBScriptサイトから入手できる。
ExcSnd.vbs
- Option Excplicit
- '==============================
- ' 定数定義
- '==============================
- 'サーバー名
- 'TODO:サーバー名を指定
- Const SERVER_NAME = "[サーバー名]"
- '共有フォルダ名
- '※ExcSnd.exeは、VBSモジュールと同一のフォルダに格納し、共有フォルダに設定
- Const SHARED_PATH = "TEST\source\ExcSnd\"
- '対象マシン一覧ファイル
- Const TARGET_MACHINE_FILE = ".\tgtfnlst.csv"
- '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ' 警告音を出すためのクラス
- '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Class ExcSnd
- '==============================
- ' 変数定義
- '==============================
- 'メッセージ
- Private mstrMessage
- '==============================
- ' プロパティ
- '==============================
- 'メッセージ
- Public Property Get Message()
- Message = mstrMessage
- End Property
- Private Property Let Message(ByVal vstrMsg)
- mstrMessage = vstrMsg
- End Property
- '********************************************************************************
- ' メソッド名:PlaySound
- ' 概要 :警告音を出す(Windows XP Exclamation.wav)
- ' パラメータ:なし
- ' 戻り値 :正常実行ならTrue、そうでなければFalse
- '********************************************************************************
- Public Function PlaySound()
- PlaySound = False
- '対象マシンの一覧を読み込み
- Dim varMachine
- If ReadMachineList(varMachine) = False Then
- Exit Function
- End If
- '対象マシンの警告音を出す
- If UBound(varMachine) > 0 Then
- If PlaySoundPersonal(varMachine) = False Then
- Exit Function
- End If
- End If
- PlaySound = True
- End Function
- '********************************************************************************
- ' メソッド名:ReadMachineList
- ' 概要 :警告音を出す対象となるマシンの一覧を読み込む
- ' パラメータ:[rvarMachine] - 対象マシン一覧
- ' 戻り値 :正常に読み込めたらTrue、そうでなければFalse
- '********************************************************************************
- Private Function ReadMachineList(ByRef rvarMachine)
- ReadMachineList = False
- Dim objTfm
- Set objTfm = New TextFileManager
- Dim strBuf
- strBuf = objTfm.ReadText(TARGET_MACHINE_FILE)
- rvarMachine = Split(strBuf, vbCrLf)
- ReadMachineList = True
- End Function
- '********************************************************************************
- ' メソッド名:PlaySoundPersonal
- ' 概要 :マシン個別に警告音を出す
- ' パラメータ:[rvarMachine] - 対象マシン一覧
- ' 戻り値 :正常に音声出力できたらTrue、そうでなければFalse
- '********************************************************************************
- Private Function PlaySoundPersonal(ByRef rvarMachine)
- PlaySoundPersonal = False
- On Error Resume Next
- Dim i
- For i = 0 To UBound(rvarMachine)
- If rvarMachine(i) = "" Then
- Exit For
- End If
- Dim objWMIService
- Set objWMIService = GetObject("winmgmts:\\" & rvarMachine(i) & "\root\cimv2:Win32_Process")
- Dim intProcessID
- 'TODO:管理者ユーザーIDと管理者ユーザーパスワードの指定
- Call objWMIService.Create("net use \\" & SERVER_NAME & "\C$ /user:" & SERVER_NAME & "\[管理者ログインID] [管理者ログインパスワード]", Null, Null, intProcessID)
- '※音がなったりならなかったりと不安定のため
- WScript.Sleep 3000
- Call objWMIService.Create("\\" & SERVER_NAME & SHARED_PATH & "excsnd.exe", Null, Null, intProcessID)
- '※音がなったりならなかったりと不安定のため
- WScript.Sleep 3000
- Call objWMIService.Create("net use \\" & SERVER_NAME & "\C$ /delete", Null, Null, intProcessID)
- Set objWMIService = Nothing
- If (Err.Number <> 0) Then
- Message = CStr(Err.Number) & ":" & Err.Desciption
- Exit Function
- End If
- Next
- On Error GoTo 0
- PlaySoundPersonal = True
- End Function
- End Class
Facade.vbs
- '※このプログラムを実行するには、管理者権限が必要です
- Option Explicit
- Dim fso
- Set fso = CreateObject("Scripting.FileSystemObject")
- Function Include(ByVal fileName)
- Include = fso.OpenTextFile(fileName, 1, False).ReadAll()
- End Function
- Execute Include(".\ExcSnd.vbs")
- Execute Include("..\..\common\FileCommon.vbs")
- Execute Include("..\..\common\TextFileManager.vbs")
- Execute Include("..\..\common\LogFile.vbs")
- '********************************************************************************
- ' 関数名:Main
- ' 概要 :警告音再生
- ' 引数 :なし
- ' 戻り値:なし
- '********************************************************************************
- Sub Main()
- Dim startTime
- startTime = Now()
- Dim es
- Set es = New ExcSnd
- Dim bRet
- bRet = es.PlaySound()
- If (bRet = False) Then
- Call WriteLog(startTime, es.Message)
- End If
- Set es = Nothing
- End Sub
- '********************************************************************************
- ' 関数名:WriteLog
- ' 概要 :エラーログを出力する
- ' 引数 :[startTime] - 実行開始
- ' [msg] - メインクラスからのメッセージ
- ' 戻り値:なし
- '********************************************************************************
- Sub WriteLog(ByVal startTime, ByVal msg)
- Const LOGFILE_PATH = "L:\警告音再生エラーログ.log"
- Dim fc
- Set fc = New FileCommon
- Call fc.FileDelete(LOGFILE_PATH)
- Set fc = Nothing
- Dim oLog
- Set oLog = New LogFile
- oLog.FileName = LOGFILE_PATH
- Dim sLog
- sLog = ""
- sLog = sLog & "実行開始時間:" & CStr(startTime) & vbCrLf
- sLog = sLog & "実行終了時間:" & CStr(Now()) & vbCrLf
- sLog = sLog & vbCrLf
- sLog = sLog & "警告音再生に失敗しました。" & vbCrLf
- sLog = sLog & "エラーの詳細は、以下のとおりです。" & vbCrLf
- sLog = sLog & vbCrLf
- sLog = sLog & msg & vbCrLf
- oLog.AddText sLog
- Set oLog = Nothing
- End Sub
2011年5月27日金曜日
WSHにドラッグ&ドロップした場合のカレントディレクトリの取得について
VBScriptをドラッグ&ドロップにて実行した場合、以下の方法ではカレントディレクトリのパスが取れない。
WindowsXPの場合:C:\Documents and Settings\[ユーザー名]
Windows7の場合:C:\Windows\System32
となってしまう。
VBScriptをどこにおいても、またドラッグ&ドロップするファイルが存在するパスに関係なく、このフォルダをカレントディレクトリと誤認する。
ただし、特殊フォルダのパスを取得することは可能。
- Option Explicit
- Dim objShell
- Set objShell = CreateObject("WScript.Shell")
- 'カレントディレクトリのパスを取得
- MsgBox objShell.CurrentDirectory
- Set objShell = Nothing
WindowsXPの場合:C:\Documents and Settings\[ユーザー名]
Windows7の場合:C:\Windows\System32
となってしまう。
VBScriptをどこにおいても、またドラッグ&ドロップするファイルが存在するパスに関係なく、このフォルダをカレントディレクトリと誤認する。
ただし、特殊フォルダのパスを取得することは可能。
- Option Explicit
- Dim objShell
- Set objShell = CreateObject("WScript.Shell")
- 'デスクトップのパスを取得
- MsgBox objShell.SpecialFolders("Desktop")
- Set objShell = Nothing
登録:
投稿 (Atom)