Version 1.01
Windows スクリプト コンポーネント で作成した、秀丸エディタマクロ用COMコンポーネントです。
COMコンポーネントといっても、XML と、VBScript、JScriptで構成されています。
このCOMコンポーネントを使う場合には、レジストリに登録が必要です。 登録時、Windows Vista以降では、管理者権限が必要になります。 登録を行った時のパスをレジストリに登録するので、あらかじめファイルを配置してから、登録を行ってください。 また、内部で .NET Framework の機能を使用しているので、.NET Framework のライブラリが必要です。 (開発環境は、 .NET Framework 4 になります。)
配布ファイルに含まれる、「HidemaruMacro.WscLib_setup.vbs」を使うと、管理者権限で起動し、 レジストリへの登録/登録解除が、簡単にできます。 HidemaruMacro.WscLib_setup.vbs と HidemaruMacro.WscLib.wsc が同じ場所にあることを確認し、 HidemaruMacro.WscLib_setup.vbs を実行してください。 登録 or 登録解除 のどちらを行うか問い合わせが表示するので、選択してください。
登録を行った後に、HidemaruMacro.WscLib.wscを移動させないでください。 ファイルを置く場所を変えたい場合は、いったん登録を解除し、ファイルを移動後、 再度登録してください。
手動で行う場合には、管理者権限でコマンドプロンプトを起動し、 以下のコマンドを入力してください。
登録 regsrv32 HidemaruMacroWscLib.wsc 登録解除 regsrv32 /u HidemaruMacroWscLib.wsc
旧バージョンの登録解除が必用です。
旧バージョンの「登録解除」を行わない場合、レジストリに古い情報が残されます。 (古い情報が残っていても、特に問題はありません。)
文字列操作用と、日付関連のオブジェクトがあり、各種メソッド、プロパティが実装されています。
$ver = getpropstr(#lib, "VersionStr");
出力例
HidemaruMacro.WscLib Version1.01 Copyright (C) 2013 h-tom
#ver = getpropnum(#lib, "Version");
出力例
101
#arraylist(オブジェクト)
対象のArrayList オブジェクト
#n(数値)
チェックしたいデータが入っているインデックス
(文字)変数の種類を示す文字列。 エラーの場合は、""を返します。 秀丸マクロから、文字列と数値を入れた場合は、以下の値を返します。
文字列 String 数値 Long
引数に、ArrayListオブジェクト を指定するので、allowobjparam文で、オブジェクトと認識するように設定してください。
allowobjparam 0,1,0; $type = callmethod_returnstr(#lib, "GetArrayListDataType", #array, #n);
メインオブジェクトを作成
#lib = = createobject("HidemaruMacro.WscLib");
メインオブジェクトから、HidemaruMacro.WscLib.String を取得する
#String = callmethod_returnobj(#lib, "CreateString");
$target
対象文字列
$dedelimiter
分割する文字列。正規表現も指定可能です。正規表現を使う場合には"/"で囲むこと。
例)
$Target = "Test1 test2\ttest3\ttest4"; $delimiter = "/\\s+/"; #ret = callmethod_returnobj(#String, "Split", $Target, $delimiter);
ArrayListオブジェクトの、"Count"、"Item"を使用する方法
#max = getpropnum(#ret, "Count"); #n = 0; while(#n < #max){ $ret[#n] = getpropstr(#ret, "Item", #n); #n = #n + 1; } releaseobject #ret;
getcollectionを使用し、HRESULT(getresultex(11))で終了を判断する方法
while(true){ $item = getcollection(#ret, 0); if(getresultex(11) != 0) break; $ret[#n] = $item; #n = #n + 1; } releaseobject #ret;
$Target
対象文字列
例)
$Target = "%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%3F%2F"; $ret = callmethod_returnstr(#String, "URIDecode", $Target); message $ret;
$Target
対象文字列
例)
$Target = "%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%3F%2F"; $ret = callmethod_returnstr(#String, "URIDecode2", $Target); message $ret;
$Target
対象文字列
例)
$Target = "秀丸エディタ?"; $ret = callmethod_returnstr(#String, "URIEncode", $Target); message $ret;
$Target
対象文字列
例)
$Target = "秀丸エディタ?"; $ret = callmethod_returnstr(#String, "URIEncode2", $Target); message $ret;
$ret = callmethod_returnstr(#String, "TrimString", $Target);
$ret = callmethod_returnstr(#String, "LTrimString", $Target);
$ret = callmethod_returnstr(#String, "RTrimString", $Target);
$Target
対象文字列
$str = callmethod_returnstr(#String, "Sprintf", $formatstring, #arraylist);
$str = callmethod_returnstr(#String, "Sprintf", $formatstring, #num);
$str = callmethod_returnstr(#String, "Sprintf", $formatstring, $str);
$formatstring
フォーマット文字列 %[flags] [width] [.precision]type type d,x,X,s しか指定できません。 flags(-,+,0, ,#) - :指定されたフィールド幅に結果を左詰めで出力します。 + :出力値が符号付きの場合は、出力値の前に符号 (+ または -) を付けます。 0 :width の前に 0 を付けると、最小幅になるまで 0 が追加されます。 0 と - が出力される場合、0 は無視されます。 整数書式 (x、X、d) と一緒に 0 を指定し、精度も指定する場合 (%04.d など)、0 は無視されます。 ' '空白文字:出力値が符号付き正数の場合は、出力値の前に空白を付けます。 空白フラグと + フラグの両方を指定すると、空白フラグは無視されます。 # :x、または X 書式と一緒に使用すると、0 以外のすべての出力値の前にそれぞれ 0、0x、または 0X が付きます。 width 出力する最小文字数を指定します。"*"には対応していません。 precision s :表示する最大文字数、 d,x,X:整数値として表示する最小桁数を指定します。
$str 、#num または #arraylist
変換対象 変数が一つの場合は、文字、数字のどちらかを指定すること。 複数の引数を指定する場合は、Arraylistオブジェクトに入れて指定すること。
例)
変換する引数が、文字列の場合
$str = callmethod_returnstr(#String, "-->%10s<--", "秀丸エディタ");
変換する引数が、数字の場合
$str = callmethod_returnstr(#String, "-->%10d<--", 12345);
変換する引数が、複数の場合
#array = createobject("System.Collections.ArrayList"); callmethod #array, "Add", "a"; callmethod #array, "Add", "c"; callmethod #array, "Add", "b"; callmethod #array, "Add", 100; allowobjparam 0,0,1; //2番目の引数(#array)をオブジェクトとして渡す指示 $str = callmethod_returnstr(#String, "Sprintf", "-->%5s:%10s:%s:%-10d<--", #array);
メインオブジェクトを作成
#lib = = createobject("HidemaruMacro.WscLib");
メインオブジェクトから、HidemaruMacro.WscLib.Date を取得する
#Date = callmethod_returnobj(#lib, "CreateDate");
Dateオブジェクトで使用するロケールを指定します。 指定する文字列/数値は、ロケール ID (LCID) の一覧 を参照してください。
ここで設定した値は、HidemaruMacro.WscLib.Date 全体に影響します。
$intervalstr
加算する文字間隔を示す文字列。 yyyy 年 q 四半期 m 月 y 年間通算日 d 日 w 週日 ww 週 h 時 n 分 s 秒
#number
間隔
$datestr
日付を示す文字列
例)
$intervalstr = "m"; #number = 1; $datestr = "2013/01/31"; $ret = callmethod_returnstr(Date, "Date_Add", $intervalstr, #number, $datestr); message $ret; // --> 13/02/28(木) 00:00:00
#number
曜日を示す数値(秀丸マクロの dayofweeknum キーワード)
例)
#number = dayofweeknum; $ret = callmethod_returnstr(Date, "WeekdayLongName", #number); message $ret; // --> 日曜日 setpropstr #Date, "Locale", "en-us"; $ret = callmethod_returnstr(Date, "WeekdayLongName", #number); message $ret; // --> Sunday
#number
曜日を示す数値(秀丸マクロの dayofweeknum キーワード)
例)
#number = dayofweeknum; $ret = callmethod_returnstr(Date, "WeekdayShortName", #number); message $ret; // --> 日 setpropstr #Date, "Locale", "en-us"; $ret = callmethod_returnstr(Date, "WeekdayShortName", #number); message $ret; // --> Sun
#number
月を示す数値(秀丸マクロの month キーワード)
例)
#number = val(month); $ret = callmethod_returnstr(Date, "MonthLongName", #number); message $ret; // --> 1月 setpropstr #Date, "Locale", "en-us"; $ret = callmethod_returnstr(Date, "MonthLongName", #number); message $ret; // --> January
#number
月を示す数値(秀丸マクロの month キーワード)
例)
#number = val(month); $ret = callmethod_returnstr(Date, "MonthShortName", #number); message $ret; // --> 睦月 setpropstr #Date, "Locale", "en-us"; $ret = callmethod_returnstr(Date, "MonthShortName", #number); message $ret; // --> Jan
$Format
フォーマット文字列、以下のフォーマット文字列が指定可能です。 %a 短い曜日(Sun) %A 長い曜日(Sunday) %b 短い月 (Jan) %B 長い月 (January) %d 十進数2桁の日付 %H 24時間制の2桁の時間 %h 12時間制の2桁の時間(1〜12時) %i 12時間制の2桁の時間(0〜11時) %m 2桁の月 %M 2桁の時間 %p 指定した時刻に応じた'AM' あるいは 'PM' %S 2桁の秒 %y 西暦の末尾2桁 %Y 西暦 %% "%"という文字 %ka jaロケールでの短い曜日 %kA jaロケールでの長い曜日 %kB 和風月名 %kp 指定した時刻に応じた'午前' あるいは '午後' %ea en-usロケールの短い曜日 %eA en-usロケールの長い曜日 %eb en-usロケールの短い月 %eB en-usロケールの長い月
$Datestr
日時を示す文字列。"now" を指定すると、現在日時を指定します。
例)
setpropstr #Date, "Locale", "ja"; $ret1 = callmethod_returnstr(#Date, "StrfTime", "%Y/%m/%d(%a) %H:%M:%S", "2013/12/10 12:00:00"); setpropstr #Date, "Locale", "en-us"; $ret2 = callmethod_returnstr(#Date, "StrfTime", "%Y/%m/%d(%a) %H:%M:%S", "2013/12/10 12:00:00"); message $ret1 + "\n" + $ret2 ;
メインオブジェクトを作成
#lib = = createobject("HidemaruMacro.WscLib");
メインオブジェクトから、HidemaruMacro.WscLib.WMI を取得する
#DWMI = callmethod_returnobj(#lib, "CreateWMI");
(数値)取得したプロセス数
ResultListプロパティで、結果を取得してください。
ResultListプロパティで、取得できる内容
タブ区切りで、プロセスID、キャプション名、フルパスが格納されています。
2476 iexplore.exe C:\Program Files\Internet Explorer\iexplore.exe
戻り値の取得方法
#max = callmethod_returnnum(#WMI, "GetProcessList"); #n = 0; while(#n < #max){ $ret[#n] = getpropstr(#WMI, "ResultList", #n); #n = #n + 1; }
(数値)取得したプロセス数、エラーの場合は、-1 を返す。
ResultListプロパティで、結果を取得してください。
ResultListプロパティで、取得できる内容
タブ区切りで、プロセスID、キャプション名、フルパスが格納されています。
2476 iexplore.exe C:\Program Files\Internet Explorer\iexplore.exe
戻り値の取得方法
#max = callmethod_returnnum(#WMI, "GetProcessListWithCaption", "hidemaru.exe"); #n = 0; while(#n < #max){ $ret[#n] = getpropstr(#WMI, "ResultList", #n); #n = #n + 1; }
(数値)正常に終了したプロセス数
ProcessTerminate メソッドの戻り値は、正常に終了したプロセス数になります。 実際に終了しようとしたプロセス数は、ResultListMaxプロパティで取得できます。
ResultListプロパティで、取得できる内容
タブ区切りで、プロセスID、キャプション名、フルパス、終了コードが格納されています。
5140 cmd.exe C:\Windows\System32\cmd.exe 0x0
戻り値の取得方法
#ret = callmethod_returnnum(#WMI, "ProcessTerminate", "cmd.exe"); #max = getpropnum(#WMI, "ResultListMax"); #n = 0; while(#n < #max){ $ret[#n] = getpropstr(#WMI, "ResultList", #n); #n = #n + 1; }
(文字) $RegRoot 以下のどれかを指定すること。
"CLASSESROOT" :HKEY_CLASSES_ROOT "CURRENTUSER" :HKEY_CURRENT_USER "LOCALMACHINE":HKEY_LOCAL_MACHINE "USERS" :HKEY_USERS
(文字) $Key レジストリキーの位置
(数値)サブキーの数、エラーの場合は、-1 を返す。
ResultListプロパティで、結果を取得してください。
戻り値の取得方法
#max = callmethod_returnnum(#WMI, "RegEnumKey", $RegRoot, $key); #n = 0; while(#n < #max){ $ret[#n] = getpropstr(#WMI, "ResultList", #n); #n = #n + 1; }
(文字) $RegRoot 以下のどれかを指定すること。
"CLASSESROOT" :HKEY_CLASSES_ROOT "CURRENTUSER" :HKEY_CURRENT_USER "LOCALMACHINE":HKEY_LOCAL_MACHINE "USERS" :HKEY_USERS
(文字) $Key レジストリキーの位置
(数値)値の数、エラーの場合は、-1 を返す。
ResultListプロパティで、結果を取得してください。
内容は文字列で、指定されたレジストリキーの値名とデータの種類をタブ区切りで返します。
header 1
データの種類は、以下のとなります。
1 REG_SZ 文字列 2 REG_EXPAND_SZ 呼び出されたときに置き換えられる環境変数を含む文字列 3 REG_BINARY バイナリデータ 4 REG_DWORD 数値 5 REG_MULTI_SZ 複数行の文字列
戻り値の取得方法
#max = callmethod_returnnum(#WMI, "RegEnumKey", $RegRoot, $key); #n = 0; while(#n < #max){ $ret[#n] = getpropstr(#WMI, "ResultList", #n); #n = #n + 1; }
HidemaruMacro.WscLib.Stringの、split、Sprintf で使用している、ArrayList の詳細は、 ArrayList クラス (System.Collections) を参照してください。
簡単な説明
オブジェクトの生成
内容の取り出し方(内容が全部文字列である事が前提)
#max = getpropnum(#array, "Count"); #cnt = 0; while(#cnt < #max){ message getpropstr(#array, "Item", #cnt); #cnt = #cnt + 1; }
while(true){ $item = getcollection(#array, 0); if(getresultex(11) != 0) break; message $item; }