Title: HidemaruMacro.WscLib

Version 1.01

1 はじめに

Windows スクリプト コンポーネント で作成した、秀丸エディタマクロ用COMコンポーネントです。

COMコンポーネントといっても、XML と、VBScript、JScriptで構成されています。

2 使用するために必要なこと

この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

2.1 バージョンアップについて

旧バージョンの登録解除が必用です。

  1. 旧バージョンを「登録解除」する。
  2. 新しいバージョンを「登録」する。

旧バージョンの「登録解除」を行わない場合、レジストリに古い情報が残されます。 (古い情報が残っていても、特に問題はありません。)

3 機能

文字列操作用と、日付関連のオブジェクトがあり、各種メソッド、プロパティが実装されています。

3.1 HidemaruMacro.WscLib

機能
HidemaruMacro.WscLib メインオブジェクト
書式
取得
#lib = createobject("HidemaruMacro.WscLib");

3.1.1 プロパティ

3.1.1.1 VersionStr
機能
バージョン情報を文字列でかえします。
書式
取得

$ver = getpropstr(#lib, "VersionStr");

出力例

HidemaruMacro.WscLib Version1.01 Copyright (C) 2013  h-tom
3.1.1.2 Version
機能
バージョン情報を数値でかえします。
書式
取得

#ver = getpropnum(#lib, "Version");

出力例

101

3.1.2 メソッド

3.1.2.1 CreateString
機能
HidemaruMacro.WscLib.String オブジェクトの取得
書式
#string = callmethod_returnobj(#lib, "CreateString");
引数
なし
戻り値
HidemaruMacro.WscLib.String オブジェクト
3.1.2.2 CreateDate
機能
HidemaruMacro.WscLib.Date オブジェクトの取得
書式
#date = callmethod_returnobj(#lib, "CreateDate");
引数
なし
戻り値
HidemaruMacro.WscLib.Date オブジェクト
3.1.2.3 CreateWMI
機能
HidemaruMacro.WscLib.WMI オブジェクトの取得
書式
#WMI = callmethod_returnobj(#lib, "CreateWMI");
引数
なし
戻り値
HidemaruMacro.WscLib.WMI オブジェクト
3.1.2.4 CreateInputBox
機能
HidemaruMacro.WscLib.InputBox オブジェクトの取得
書式
#Inputbox = callmethod_returnobj(#lib, "CreateInputBox");
引数
なし
戻り値
HidemaruMacro.WscLib.InputBox オブジェクト
3.1.2.5 GetArrayListDataType
機能
ArrayListに格納されている内容の種類を、文字列で返す。
書式
$type = callmethod_returnstr(#lib, "GetArrayListDataType", #arraylist, #n);
引数

#arraylist(オブジェクト)

対象のArrayList オブジェクト

#n(数値)

チェックしたいデータが入っているインデックス
戻り値

(文字)変数の種類を示す文字列。 エラーの場合は、""を返します。 秀丸マクロから、文字列と数値を入れた場合は、以下の値を返します。

文字列     String
数値       Long
その他

引数に、ArrayListオブジェクト を指定するので、allowobjparam文で、オブジェクトと認識するように設定してください。

allowobjparam 0,1,0;
$type = callmethod_returnstr(#lib, "GetArrayListDataType", #array, #n);

3.2 HidemaruMacro.WscLib.String

HidemaruMacro.WscLib.Stringオブジェクトの作成方法

メインオブジェクトを作成

#lib = = createobject("HidemaruMacro.WscLib");

メインオブジェクトから、HidemaruMacro.WscLib.String を取得する

#String = callmethod_returnobj(#lib, "CreateString");

3.2.1 プロパティ

3.2.1.1 TrimDelimiter
機能
TrimString、LTrimString、RTrimString メソッドで、削除する文字列を指定します。 初期値は" "(スペース)になります。 正規表現の文字クラスも指定可能です。
書式
設定
setpropstr #String, "TrimDelimiter", "[ \t]";
取得
$trim = getpropstr(#String, "TrimDelimiter");

3.2.2 メソッド

3.2.2.1 ResetDelimiter
機能
TrimDelimiter プロパティ を初期化する。
書式
callmethod #String, "ResetDelimiter";
引 数
なし
戻り値
なし
3.2.2.2 Split
機能
文字列を指定された文字列で分解し、ArrayListに格納して返します。
書式
#ret = callmethod_returnobj(#String, "Split", $Target, $delimiter);
引数

$target

対象文字列

$dedelimiter

分割する文字列。正規表現も指定可能です。正規表現を使う場合には"/"で囲むこと。

例)

$Target    = "Test1  test2\ttest3\ttest4";
$delimiter = "/\\s+/";
#ret = callmethod_returnobj(#String, "Split", $Target, $delimiter);
戻り値
(オブジェクト)ArrayListオブジェクト を返します。
戻り値の取得方法その1

ArrayListオブジェクトの、"Count"、"Item"を使用する方法

#max = getpropnum(#ret, "Count");
#n = 0;
while(#n < #max){
    $ret[#n] = getpropstr(#ret, "Item", #n);
    #n = #n + 1;
}
releaseobject #ret;
戻り値の取得方法その2

getcollectionを使用し、HRESULT(getresultex(11))で終了を判断する方法

while(true){
    $item = getcollection(#ret, 0);
    if(getresultex(11) != 0) break;
    $ret[#n] = $item;
    #n = #n + 1;
}
releaseobject #ret;
3.2.2.3 URIDecode
機能
コード化された URI (Uniform Resource Identifier) のコード化される前のものを返します。 (jscriptのdecodeURI) 引数が有効でない場合、""を返します。
書式
$ret = callmethod_returnstr(#String, "URIDecode", $Target);
引 数

$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;
戻り値
(文字)変換結果
3.2.2.4 URIDecode2
機能
コード化された URI (Uniform Resource Identifier) のコード化される前のものを返します。 (jscriptのdecodeURIComponent) 引数が有効でない場合、""を返します。
書式
$ret = callmethod_returnstr(#String, "URIDecode2", $Target);
引数

$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;
戻り値
(文字)変換結果
3.2.2.5 URIEncode
機能
文字列を有効な URI (Uniform Resource Identifier) としてコード化します。 「:」、「/」、「;」、「?」の各文字はコード化されません。 (jscriptのencodeURI) 引数が有効でない場合、""を返します。
書式
$ret = callmethod_returnstr(#String, "URIEncode", $Target);
引数

$Target

対象文字列

例)

$Target    = "秀丸エディタ?";
$ret = callmethod_returnstr(#String, "URIEncode", $Target);
message $ret;
戻り値
(文字)変換結果
3.2.2.6 URIEncode2
機能
文字列を有効な URI (Uniform Resource Identifier) としてコード化します。 (jscriptのencodeURIComponent) 引数が有効でない場合、""を返します。
書式
$ret = callmethod_returnstr(#String, "URIEncode2", $Target);
引数

$Target

対象文字列

例)

$Target    = "秀丸エディタ?";
$ret = callmethod_returnstr(#String, "URIEncode2", $Target);
message $ret;
戻り値
(文字)変換結果
3.2.2.7 TrimString、LTrimString、RTrimString
機能
文字列から、指定された文字を、先頭、末尾、先頭と末尾、から削除します。 削除する文字は、TrimDelimiterプロパティで設定します。
書式

$ret = callmethod_returnstr(#String, "TrimString", $Target);

$ret = callmethod_returnstr(#String, "LTrimString", $Target);

$ret = callmethod_returnstr(#String, "RTrimString", $Target);

引数

$Target

対象文字列
戻り値
(文字)変換結果
3.2.2.8 Sprintf
機能
引数を、書式文字列に従って変換した文字列を返す。
書式

$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);
戻り値
(文字)変換結果

3.3 HidemaruMacro.WscLib.Date

HidemaruMacro.WscLib.Dateオブジェクトの作成方法

メインオブジェクトを作成

#lib = = createobject("HidemaruMacro.WscLib");

メインオブジェクトから、HidemaruMacro.WscLib.Date を取得する

#Date = callmethod_returnobj(#lib, "CreateDate");

3.3.1 プロパティ

3.3.1.1 Locale
機能

Dateオブジェクトで使用するロケールを指定します。 指定する文字列/数値は、ロケール ID (LCID) の一覧 を参照してください。

ここで設定した値は、HidemaruMacro.WscLib.Date 全体に影響します。

書式
設定
setpropstr #Date, "Locale", "en-us"; setpropnum #Date, "Locale", 1033;
取得
#locale = getpropnum(#Date, "Locale");

3.3.2 メソッド

3.3.2.1 ResetLocale
機能
Locale設定をデフォルトに戻し、デフォルトのロケール値を返します。
書式
#ret = callmethod_returnnum(#Date, "ResetLocale");
引数
なし
戻り値
(数値)現在のロケール値
3.3.2.2 Date_Add
機能
指定された時間間隔を加算した日付を返します。
書式
$ret = callmethod_returnstr(Date, "Date_Add", $intervalstr, #number, $datestr);
引数

$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
戻り値
(文字)日時
3.3.2.3 WeekdayLongName
機能
指定された曜日を表す長い文字列を返します。
書式
$ret = callmethod_returnstr(Date, "WeekdayLongName", #number);
引数

#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
戻り値
(文字)曜日を表す文字列
3.3.2.4 WeekdayShortName
機能
指定された曜日を表す短い文字列を返します。
書式
$ret = callmethod_returnstr(Date, "WeekdayShortName", #number);
引数

#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
戻り値
(文字)曜日を表す文字列
3.3.2.5 MonthLongName
機能
指定された月を表す長い文字列を返します。
書式
$ret = callmethod_returnstr(Date, "MonthLongName", #number);
引数

#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
戻り値
(文字)月を表す文字列
3.3.2.6 MonthShortName
機能
指定された月を表す長い文字列を返します。 ロケールが "ja"/1041 の場合には、和風月名を返します。
書式
$ret = callmethod_returnstr(Date, "MonthShortName", #number);
引数

#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
戻り値
(文字)月を表す文字列
3.3.2.7 StrfTime
機能
指定された日時を、現在のロケールに従い指定されたフォーマットの文字列にして返します。 ロケール設定は Locale プロパティに従います。
書式
$ret = callmethod_returnstr(#Date, "StrfTime", $Format, $Datestr);
引 数

$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 ;
戻り値
(文字)フォーマットに従った文字列

3.4 HidemaruMacro.WscLib.WMI

HidemaruMacro.WscLib.WMIオブジェクトの作成方法

メインオブジェクトを作成

#lib = = createobject("HidemaruMacro.WscLib");

メインオブジェクトから、HidemaruMacro.WscLib.WMI を取得する

#DWMI = callmethod_returnobj(#lib, "CreateWMI");

3.4.1 プロパティ

3.4.1.1 ResultList
機能
HidemaruMacro.WscLib.WMI オブジェクトの各種メソッドの戻り値を取得する。
書式
Readonly
取得
$ret = getpropstr(#WMI, "ResultList", #n);
引数
(数値)配列のIndex値
戻り値
(文字)各メソッドを参照のこと
3.4.1.2 ResultListMax
機能
HidemaruMacro.WscLib.WMI オブジェクトの各種メソッドの戻り値の数を取得する。 (現在保有している戻り値の数)
書式
Readonly
取得
#max = getpropnum(#WMI, "ResultListMax");
戻り値
(数値)戻り値の数
その他
基本的には各メソッドの戻り値と、同じ値になる。 ProcessTerminate メソッドの戻り値は、正常に終了したプロセス数になります。 実際に終了しようとしたプロセス数は、ResultListMaxプロパティで取得できます。

3.4.2 メソッド

3.4.2.1 GetProcessList
機能
実行中のプロセス一覧を取得する
書式
#ret = callmethod_returnnum(#WMI, "GetProcessList");
引数
なし
戻り値

(数値)取得したプロセス数

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;
}
3.4.2.2 GetProcessListWithCaption
機能
指定されたキャプションを持つ、プロセス一覧を取得する
書式
#ret = callmethod_returnnum(#WMI, "GetProcessListWithCaption", "hidemaru.exe");
引数
(文字) キャプション
戻り値

(数値)取得したプロセス数、エラーの場合は、-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;
}
3.4.2.3 ProcessTerminate
機能
指定されたプロセスID または、キャプション、フルパスを持つ、プロセスを終了する。
書式
#ret = callmethod_returnnum(#WMI, "ProcessTerminate", $Target);
引数
(文字) プロセスID 、キャプション、フルパス のどれか一つ。 数値のみの場合(IsNumeric がtrue )は、プロセスID、 パスの区切りである、"\"が含まれる場合は、フルパス、 その他は、キャプションとして処理します。
戻り値

(数値)正常に終了したプロセス数

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;
}
3.4.2.4 RegEnumKey
機能
指定されたレジストリの、サブキーの一覧を取得する
書式
#ret = callmethod_returnnum(#WMI, "RegEnumKey", $RegRoot, $key);
引数

(文字) $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;
}
3.4.2.5 RegEnumKeyValue
機能
指定されたレジストリの値名とデータの種類一覧を出力する
書式
#ret = callmethod_returnnum(#WMI, "RegEnumKeyValue", $RegRoot, $key);
引数

(文字) $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;
}

3.5 ArrayListオブジェクトについて

HidemaruMacro.WscLib.Stringの、split、Sprintf で使用している、ArrayList の詳細は、 ArrayList クラス (System.Collections) を参照してください。

簡単な説明

4 注意事項や制限事項など

5 その他

6 連絡先

7 変更履歴

2013/12/21 Version 1.00
2013/12/26 Version 1.01
2013/12/29