Copyright: Presented by Hideo Saitoh


もくじ
 秀丸エディタ for Windows95 Version2.14 マクロ言語ヘルプ目次

秀丸マクロの概要

変数の使い方	式について	関数について	エラーの処理

通常のコマンドを実行する文

挿入系文

ファイル系文

カーソル移動系文

クリップボード系文

削除系文

その他編集系文

検索系文

ウィンドウ系文

メニュー系文

その他のコマンド系文

メッセージ系

message，	question

beep，	play, playsync

debuginfo	showvars

title

プログラム実行系

run，runsync，runsync2

マクロ制御系

endmacro, endmacroall

execmacro

disabledraw，enabledraw

disablebreak

disableinvert, enableinvert

ブロック

if

while

break

continue

goto文とラベル

サブルーチン

disableerrormsg, enableerrormsg

入力系

inputpos

menu, mousemenu

input関数

inputchar関数

iskeydown関数

INIファイル系

writeinistr，writeininum

getinistr関,数，getininum関数,

レジストリ系

openreg	createreg

writeregstr, writeregnum

getregstr関数, getregnum関数

closereg

設定系

config	loadkeyassign

envchanged

setwindowsize	setwindowpos

showwindow

秀丸管理

DDE

クリップボードと変数とのやりとり


秀丸エディタ for Windows95  ヘルプ

Help Version 2.14.00

Copyright (C) 1992-96 by 斉藤秀夫

associated by 山田和夫

山下明良

秀丸95担当


秀丸マクロの概要

　秀丸マクロは，「マクロ登録」でファイルを登録して，それを呼び出す形で使います。マクロは拡張子がMACのファイルでなければいけません。また，マクロファイルは秀丸本体（HIDEMARU.EXE）と同じフォルダに置いておく必要があります。

　マクロは50個まで登録することができます。また，「マクロ実行」コマンドや「キー操作の読み込み」と「キー操作の再生」コマンドなどを使って実行することができます。

　秀丸マクロは，各種の動作を実行する文と，流れを制御する制御文からなります。文はセミコロンで区切らなければいけません。セミコロンが無い場合は，「セミコロンが無い」とは別のエラーが出るので注意してください。

　正しい例：

gofiletop;

insert "A";

down; right; insert "A";

　正しくない例：

gofiletop

insert "A"

　制御文は，例えばif文などのようにＣ言語とよく似たものがあります。この場合，セミコロンはいりません。

if( x != 0 ) {

golinetop;

}

　秀丸マクロの文やキーワードは，すべて小文字だけで記述します。

　コメントを入れるにはＣ++言語と同様に//が使えます。

　秀丸マクロでは変数を使うことができます。変数には数値変数と文字列変数があり，これらを使って各種の演算をすることができます。数値変数は#で始まり，文字列変数は$で始まります。

#n = 100 * 50 + 10 + strlen( $x );

$s = rightstr( "斉藤" + $x + "これはこれは", 20 );

　callとreturnを使ってサブルーチンを作ることもできます。サブルーチン内でローカル変数を使いたい場合は，##または$$で始まる変数を使います。

　変数のほか，秀丸にはいくつかの内部的な値を表現するキーワードが存在します。例えば，question文を実行するとその結果(「はい」を選んだか「いいえ」を選んだか)がresultという値として表現されます。これらを使って条件分岐なども可能です。

　秀丸のマクロは、８０個まで登録することができますが、キー割り当て可能なのは１番から５０番までの５０個だけです。


エラーの処理

　秀丸マクロ実行中に、各コマンドでエラーが発生した場合（例：appendsave "abc.txt"を実行した場合にabc.txtが存在しなかった等）、エラーメッセージが表示され、result==falseとなります。（正常終了時はresult==trueです）

　マクロ実行中に、軽微なエラーによってビープ音が鳴るようなことが発生した場合、音鳴らずに、代わりにresult==falseとなります。

　マクロ作成時には、エラーの時の処理も十分考慮してください。

例：

    appendsave "abc.txt";

    if( !result ) {

        message "abc.txtへの追加書き込みに失敗しました。";

        endmacro;

    }

　disableerrormsg文を実行すると、それ以降エラーメッセージは一切表示されなくなります。


挿入系文

　挿入系の文として，以下のものがあります。

命令	機能

dupline	行の二重化

insert	文字列の挿入

insertfix	文字列の挿入その２

insertline	空行挿入

insertreturn	改行

overwrite	文字列の上書き

tab	タブ

undelete	削除内容復元

　insert文は，パラメタで指定された文字列を挿入したのち，カーソルを挿入した文字列の最後に移動します。

　insertfix文はinsertと同様に文字列を挿入しますが，カーソルは移動しません。

　overwrite文は，パラメタで指定された文字列を上書きしたのち，カーソルを上書きした文字列の最後に移動します。

　例：

insert "ABC";

insertfix "斉藤秀夫";

overwrite "ABC" + $a;

　改行文字の挿入には，文字コード10(line-feed)を挿入します。

　例：

insert "\x0A";

　または次のようにしてもかまいません｡

insert "\n";

　insertreturn文は，改行キーを押したのと全く同じ働きをします。パラメタはありません。ちなみにこのコマンドは現在のモードが上書きモードか挿入モードかによって動作が異なりますので注意が必要です。挿入モードでの動作を期待する場合は，以下のようにする必要があります。

if( overwrite ) {

overwriteswitch; insertreturn; overwriteswitch;

} else {

insertreturn;

}

　tab，dupline，insertline，undelete文の動作は，対応する秀丸のコマンドと同じです。


ファイル系文

　ファイル系の文として，以下のものがあります。

命令	機能

exit	終了

exitall	全終了

newfile	ファイルの新規作成

print	印刷

quit	破棄して終了

save	ファイルの上書き保存

saveexit	保存して終了

saveall	全保存

saveexitall	全保存終了

saveupdatedall	全保存（更新ファイルのみ）

savelf	上書き保存（改行=LF）

　print文は、ダイアログボックスを出しません。ダイアログボックスで指定する項目は秀丸側で適当に決められてしまいます。「選択した範囲のみ」のチェックボックスは、もし範囲選択された状態だとｏｎと解釈され、他の項目は前回の印刷の時の値がそのまま使用されます。

　exitやexitallなどの秀丸を終了させてしまう文を実行すると、マクロもいっしょに終了してしまいます。秀丸を終了させてもマクロは続行したい場合はsetactivehidemaruやclosehidemaruを使う必要があります。

　また，以下の文はパラメタでファイル名を指定してください。ダイアログボックスは出ません。

命令	機能

appendsave	別ファイルへの追加保存

changename	ファイル名の変更

insertfile	カーソル位置への読み込み

loadfile	ファイルを閉じて開く

openfile	ファイルを開く

readonlyopenfile	書換え禁止でファイルを開く

readonlyloadfile	書換え禁止でファイルを閉じて開く

saveas	ファイルの名前を付けて保存

　例：

openfile "ABC.TXT";

　openfile文とsaveas文は，ファイル形式を同時に指定することができます。パラメタは以下のようにコンマで区切って必要なものを指定してください。

openfile ファイル名 [,sjis | unicode | euc | jis]

saveas ファイル名 [,sjis | unicode | euc | jis] [, lf]

　sjisは通常のファイル形式、unicodeはUnicode形式、eucはEUC形式、jisはJIS形式を意味します。

　openfileのunicodeの指定は、自動で判断するので、実際には意味がありません。

　saveasの場合は、ちゃんと指定された形式で保存します。何も指定しない場合、現在オープンしているファイルの形式でそのまま保存されます。さらに、lfを指定すると、改行=LF の形式で保存されます。

　例：

saveas "ABC.TXT", unicode;

openfile文の裏技！！！

　実は、openfileには裏技があります。openfileのパラメタには、hidemaru.exeを起動するオプションがそのまま指定できます。

　openfile "/r " + $filename　とすると、readonlyopenfileと同じになります。

　openfile ""　とすると、newfileと同じになります。

　openfile "/(0,0,100,100)" とすると、0,0～100,100のサイズの秀丸が起動されます。

　さらに、秀丸には隠しオプションで/hというのがあります。これを指定すると、秀丸エディタがステルスモードになり、画面から見えなくなる＆マクロの実行が非常に高速になります。

　openfile "/h " + $filename

　です。なお、見えなくなった秀丸はマクロの中で終わらせてあげないと後でユーザが何がなんだかわからなくなります。(^^;

　ただし、これらのオプションは、現在マクロを実行している秀丸が、新規作成された秀丸であってはいけません。なぜなら、新規作成された秀丸がopenfileを実行すると、そのファイルをloadfileと同様に扱ってしまうからです。

　この場合は、changenameを使ってファイル名を"nul"にするなどして対処してください。

ダイアログボックスを出すファイル系文

　実は、ダイアログボックスを出すファイル系文もあります。

命令	機能

APPENDSAVE	別ファイルへの追加保存

CHANGENAME	ファイル名の変更

INSERTFILE	カーソル位置への読み込み

LOAD	ファイルを閉じて開く

OPEN	ファイルを開く

SAVEAS	ファイルの名前を付けて保存

　これらの文にはパラメタがありません。ユーザがＯＫボタンを押して処理が成功するとresult==trueになります。失敗したり、キャンセルされた場合はfalseになります。


カーソル移動系文

　カーソル移動系の文として，以下のものがあります。

命令	機能

down	カーソル下移動

gofileend	ファイルの最後に移動

gofiletop	ファイルの先頭に移動

gokakko	対応する括弧に移動

golastupdated	最後に編集した所に移動

goleftkakko	'{'に移動

golineend	行の最後に移動

golineend2	論理行末に移動

golinetop	行の先頭に移動

golinetop2	論理行頭に移動

gorightkakko	'}'に移動

goscreenend	画面の最後に移動

goscreentop	画面の先頭に移動

gowordend	単語の最後に移動

gowordtop	単語の先頭に移動

halfnextpage	半次ページ

halfprevpage	半分前ページ

jump	指定行に移動

left	カーソル左移動

moveto	任意の位置へのカーソル移動(後述)

movetolineno	任意の位置へのカーソル移動(後述)

nextfunc	次の関数に移動

nextpage	次ページ

prevfunc	前の関数に移動

prevpage	前ページ

right	カーソル右移動

rollup	スクロールアップ

rollup2	スクロールアップ２

rolldown	スクロールダウン

rolldown2	スクロールダウン２

up	カーソル上移動

wordleft	単語左

wordright	単語右

wordrightsalnen	単語右(サルネン風)

prevpos	前のカーソル位置に移動

　up，down，right，leftコマンドは単独でも使えますが，パラメタを指定するとその分まとめて移動するようになります。パラメタには数値を指定してください。

　例：

up 100;

down #a + #b * 100;

　ちなみにこの４つのカーソル移動コマンドだけは終了コードとして，

－　少しでもカーソル移動した場合は true

－　カーソル移動しなかった場合は false

を返します。

　movetoコマンドは任意の位置にカーソルを移動します。パラメタとしてＸ座標とＹ座標を指定してください。数値でないといけません。

moveto Ｘ座標, Ｙ座標

　Ｙ座標はファイルの先頭を０として数え，Ｘ座標は一番左側の位置を０として数えた値です。

　ちなみに現在のカーソル位置はxとyで表現されます。例えば，カーソルを現在のy位置の1/2の箇所に移動するには，以下のようにします。xやyは内部的な値を表現するキーワードです。

moveto x, y/2;

　movetolinenoは、XY座標の代わりに「エディタ的」に計算した行番号と桁番号でカーソルを移動します。

movetolineno 桁番号, 行番号

　桁番号は、タブ文字は１つとして数えた番号です。movetoと違い、桁番号も行番号も１から始まります。たとえばファイルの先頭に移動するには、

movetolineno 1, 1;

　です。ちなみに、columnの返す値は０から始まるので注意してください。

　「範囲選択しながらのカーソル移動」というコマンドはありません。別途beginsel  を実行してからカーソル移動することによって範囲選択してください。


クリップボード系文

　クリップボードf系の文として，以下のものがあります。

命令	機能

appendcopy	追加複写

appendcut	追加切り抜き

beginrect	BOX範囲選択開始

beginsel	範囲選択開始

pasterect	BOX貼り付け

copy	複写

copyline	行を複写

copyword	単語を複写

cut	切り抜き

escape	範囲選択を取り消す

paste	貼り付け

refcopy	引用付き複写

selectall	すべてを選択

selectline	行の選択

selectword	単語の選択

showcliphist	クリップボード履歴の表示

poppaste	貼り付け＋履歴戻し

getcliphist	クリップボード履歴からの取り出し

clearcliphist	クリップボード履歴の消去

　範囲選択をしている状態でescapeコマンドを使うと，範囲選択は取り消されてしまいますが，seltopx，seltopy，selendx，selendyの値は次の範囲選択を開始するまで保持されます。

　getcliphistは、パラメタとしてヒストリーの番号を指定してください。０が最新の履歴、１が１つ前、２が２つ前という具合です。取り出しに成功すると、result == trueになります。存在しない番号を指定したり、常駐秀丸がいないなどの場合はresult == falseとなります。

　クリップボードから文字列を取り出して、それを変数に代入したり、変数の値をクリップボードにセットしたりすることもできます。クリップボードとの文字列のやりとりを参照してください。


削除系文

　削除系の文として，以下のものがあります。

命令	機能

backspace	Backspace

delete	Del

deleteafter	カーソルより後ろを削除

deletebefore	カーソルより前を削除

deleteline	行削除

deleteword	単語の削除（カーソルの後ろだけ）

deletewordall	単語の削除（全部）

deletewordfront	単語の削除（カーソルより前の部分だけ）

　delete文はDelキーと同じ動作をします。範囲選択された状態だとその範囲を削除します。


その他編集系文

　その他編集系の文として，以下のものがあります。

命令	機能

casechange	大文字／小文字の変換

indent	インデント

redo	やり直しのやり直し

reopen	編集のやり直し

shifttab	行選択の補完

tab	選択範囲のタブによるインデント

tohankaku	半角文字に変換

tolower	小文字に変換

tospace	タブ->空白変換

totab	空白->タブ変換

toupper	大文字に変換

tozenkakuhira	全角ひらがなに変換

tozenkakukata	全角カタカナに変換

undo	やり直し

unindent	逆インデント

capslockforgot	CapsLockしわすれの是正

imeconvforgot	かな漢字変換しわすれの是正

　indentやtohankakuなどは、範囲選択した状態で実行しなければ意味がありません。


検索系文

　検索系の文として，以下のものがあります。

命令	機能

finddown	下候補

findup	上候補

getsearch	検索文字列の取得

gosearchstarted	検索開始位置へ戻る

searchdown	下方向検索

searchup	上方向検索

replacedown	下方向置換

replaceup	上方向置換

replaceall	全置換

replaceallfast	高速全置換

setsearch	検索バッファの設定

goupdatedown	編集マークの下検索

goupdateup	編集マークの下検索

clearupdates	編集マークのクリア

grep	grepの実行（パラメタ付き）

grepdialog	grepの実行（ダイアログボックス付き）

localgrep	現在の内容からgrepを実行

　findup，finddown，getsearch文にはパラメタが必要ありません。getsearch文はカーソル位置の単語を検索文字列として秀丸内部に取得する命令です。

　searchup，searchdown文は，ダイアログボックスで指定するパラメタを同時に指定するようになっています。パラメタは以下のようにコンマで区切って必要なものを指定してください。

searchdown 検索文字列 [,word] [,casesense] [,regular] [,fuzzy] [,linknext]

searchup 検索文字列 [,word] [,casesense] [,regular] [,fuzzy] [,linknext]

　wordを指定すると，単語検索になります。casesenseは大文字／小文字の区別をするという意味で，指定しない場合は区別されなくなります。regularを付けると正規表現で検索します。fuzzyを付けるとあいまい検索をします。linknextを付けると次の秀丸も続けて検索します。

　regularまたはfuzzyを指定するとword，casesenseは無視されます。

　例：

searchdown "文字"

searchdown "文字", word

　置換コマンドは以下のとおりです。

replaceup 検索文字列, 置換文字列 [,word] [,casesense] [,ask] [,regular] [,fuzzy] [,linknext]

replacedown 検索文字列, 置換文字列 [,word] [,casesense] [,ask] [,regular] [,fuzzy] [,linknext]

　askを指定すると確認が入ります。

　検索系文は，成功したかしなかったかによって結果コードを返します。結果コードはresultキーワードで参照することができます。

　成功した場合は１(TRUE)になり，失敗した場合は０(FALSE)になります。

　例：

searchdown "文字";

if( !result ) message "見つかりませんでした。";

　replaceall, replaceallfast文は、replaceup, replacedown文とまったく同じ文法です。replaceallは普通に全置換を実行し、replaceallfastは高速に全置換を実行します。置換が終了しても、「何個置換しました」のメッセージは表示されず、代わりにresultに置換した個数が入ります。途中で中断された場合はresultは-1になります。

　メニューから検索等を行って失敗した場合には、音やメッセージで知らせますが、マクロから実行した場合には音やメッセージは出ません。

一般に，検索が失敗した場合は音を鳴らしたりメッセージを出したりしますが，マクロから実行した場合はそれらの動作をしません。代わりにresultに結果コードを返します。


grep系文
grep, grepdialog, localgrep文

　grep文は、パラメタを指定してgrepを実行します。パラメタは以下のように指定します。

grep 検索文字列, 検索するファイル, カレントフォルダ [,word] [,casesense] [,regular] [,fuzzy] [,subdir] [,icon] [,filelist]

　カレントフォルダとして現在のフォルダを指定する場合は、"."か、または""を指定してください。resultには置換した個数が入ります。途中で中断された場合はresultは-1になります。

　正規表現文字列やファイル名の中で「\」を""で囲った文字列の中で指定する場合は、秀丸エディタの文字列定数の仕様により、「\\」と指定しなくてはいけません。例えば正規表現で「\n」（改行文字）を検索させたい場合は、マクロの中の文字列定数としては"\\n"と指定する必要があります。

例：

grep "#include", "*.cpp;*.c", ".", regular;

　grepdialog文は、「grepの実行...」のダイアログボックスを出します。ちなみにgrepdialog文を実行すると、現在の秀丸が新規作成状態でない場合は新規に秀丸エディタが立ち上がります。

　localgrep文は、現在の内容を対象にしてgrepを実行します。パラメタは以下のように指定してください。

localgrep 検索文字列 [,word] [,casesense] [,regular] [,fuzzy] [,icon]

例：

localgrep "#include", word;


setsearch文

　setsearch文は、秀丸が内部で保持している検索バッファの内容を設定します。検索バッファは、「上候補」や「下候補」の際に参照されるバッファで、検索文字列と、検索の方法（正規表現かどうかなどのフラグ）を保持しています。

　setsearchコマンドで検索バッファの内容を設定してからfindup/finddownを実行すると、searchup/searchdownを実行したのと同じ結果が得られます。

setsearch 文字列, フラグ

　フラグは、各ビットごとのＯＲの値を指定します。

単語の検索	ビット０

大文字/小文字の区別	ビット１

置換かどうか	ビット２（置換の場合に１）

置換の場合、問い合わせの有無	ビット３

正規表現	ビット４

あいまい検索	ビット５

ファイル名一覧だけ作成	ビット６（grep用）

次の秀丸も続けて検索	ビット７

　setsearchと逆に、検索バッファの内容を参照するには、searchbuffer, searchoptionという値を使います。

　マクロの中でsearchup/searchdownを使うと、検索バッファの内容が書き換えられてしまいます。そうすると、ユーザが次に上候補/下候補コマンドを使った時に予期しない動作をしてしまうことがあります。

　こういう場合に、setsearch/searchbuffer/searchoptionを使うと便利です。

　例：

$s = searchbuffer;

#f = searchoption;

…

マクロ本体…

…

setsearch $s, #f;

endmacro;


ウィンドウ系文

　ウィンドウ系の文として，以下のものがあります。

命令	機能

nexthidemaru	次の秀丸

prevhidemaru	前の秀丸

nexthidemaruicon	次の秀丸（アイコンも含む）

prevhidemaruicon	前の秀丸（アイコンも含む）

restoredesktop	デスクトップ復元

savedesktop	デスクトップ保存

scrolllink	他の秀丸と同時スクロール

split	ウィンドウを２つに分割

splitswitch	分割ウィンドウ切り替え

windowcascade	秀丸を重ねて表示

windowhorz	秀丸を横に並べる

windowtiling	秀丸を並べて表示

windowvert	秀丸を縦に並べる

windowlist	ウィンドウ一覧表示

compfile	他の秀丸と内容比較

　nexthidemaru，prevhidemaruを実行すると，マクロの制御もそれに伴なって切り替えます。

　compfileコマンドは、パラメタとして他の秀丸のウィンドウハンドルまたはウィンドウ番号を指定する必要があります。以下のように使います。

例：

compfile findhidemaru( "c:\\abc.txt" );

　比較先のウィンドウが見つからない場合は結果コードは-1、比較の結果、違いが見つからなかった場合は結果コードは0、違いが見つかってその位置にカーソル移動した場合は1となります。


メニュー系文

　メニューを出す文とマクロを呼び出す文はマクロからは使えません。というか，使えてしまいますが，使わないでください。

　マクロからマクロを実行するには、execmacroを使います。


その他のコマンド系文

　その他のコマンド系文として，以下のものがあります。

命令	機能

backtagjump	バックタグジャンプ

clist	Ｃ言語関数一覧

directtagjump	ダイレクトタグジャンプ

freecursorswitch	フリーカーソルモードの切り替え

imeswitch	かな漢字変換の切り替え

imeregisterword	かな漢への単語登録

help	外部ヘルプ

help2	外部ヘルプ２

help3	外部ヘルプ３

msdnlibrary	MSDNライブラリ

hidemaruhelp	秀丸ヘルプ

marklist	マーク一覧

macrohelp	秀丸マクロヘルプ

overwriteswitch	上書き／挿入モード切り替え

readonlyswitch	ファイルの書換え禁止／許可の切り替え

setmark	カーソル行のマーク

showcode	カーソルの文字コードの表示

showlineno	行番号の表示／非表示

tagjump	タグジャンプ

redraw	秀丸ウィンドウの再描画

browsemodeswitch	閲覧モードの切り替え

　tagjump、backtagjump、directtagjumpは、成功するとresult==yes、失敗するとresult==noとなります。他、エラーメッセージが出るような事態が発生した場合はresult==noとなり、そうでない場合はresult==yesです。


message文

　メッセージボックスを出します。メッセージボックスはいわゆるインフォメーションアイコン＆了解ボタンのスタイルで出ます。パラメタでメッセージの文字列を指定します。数値型の値は文字列型に変換して指定してください。

　例：

message "秀丸です";

message str(100);


question文

　質問のメッセージを出します。メッセージボックスには「はい」と「いいえ」のボタンがあります。

question "これでいいですか？";

といった具合に使います。「はい」を選んだのか「いいえ」を選んだのかは，resultというキーワード で表現されます。if文と組みあわせて使います。

　「はい」を選ぶとresultは１になり，「いいえ」を選ぶと０となります。yesやnoのキーワードと組みあわせて条件判定すると便利です。

　例：

question "セーブしますか？";

if( result == yes ) {

save;

}


beep文

　beep文は，ピっという音を出します。


play文
play, playsync文

　play, playsync文は、パラメタで指定されたWAVファイルを再生します。play文はWAVファイルの再生の終了を待たずにマクロの実行を継続します。playsync文はWAVファイルの再生が終了するまで待ちます。

　例：

play "d:\\windows\\chord.wav";


debuginfo文

　debuginfo文には２つの使い方があります。

　debuginfo文のパラメタに、0または0以外の数値を指定した場合、debuginfo文は、デバッグメッセージの表示の禁止／許可を行います。0を指定した場合禁止され、0以外を指定した場合許可されます。マクロ実行直後は禁止になっています。

　debuginfo文のパラメタに文字列を指定した場合は、debuginfo文はOutputDebugString関数を使ってその文字列をDBWinなどのデバッグアプリケーションに表示します。

　DBWinなどのデバッグアプリケーションが常駐していない時にこの文を実行すると、文字列はデバッグ端末に送られます。デバッグアプリケーションもデバッグ端末もない場合はWindowsの動作がおかしくなることがあるので注意してください。

　改行文字を出力したい場合は、"\x0A"を使って下さい。

　例：

debuginfo 1;

debuginfo "#a = " + str(#a) + "\x0a";


showvars文

　showvars文は、現在の変数の一覧をデバッグアプリケーションに表示します。実際に表示させるためには、debuginfo文でデバッグメッセージの表示が許可されている必要があります。


title文

　title文は、秀丸エディタのウィンドウのキャプション（タイトルバー）の部分にメッセージを表示します。変更されたキャプションはウィンドウが切り替わっても保持されます。

　現在の秀丸のキャプションだけを元に戻すには、title 0 を実行してください。他の秀丸も含めてすべてのキャプションを元に戻すには、title 1を実行してください。

　マクロが終了するとキャプションはすべて自動的に元に戻ります。または、キャプションを設定した後でtitle -1を実行すると、マクロで設定したキャプションがマクロ終了時もそのまま残るようになります。

　例：

title "マクロ処理中です";

　title文の種類：

title 文字列	キャプションの設定

title 0	現在の秀丸のキャプションを元に戻す

title 1	すべての秀丸のキャプションを元に戻す

title -1	現在設定されているキャプションをマクロ終了時も残す


run,runsync文
run，runsync，runsync2文

　run文は他のプログラムを実行します。パラメタとしてコマンドの文字列を指定してください。

　run文はプログラムを起動したあとで，すぐにマクロの実行を続行します。

　runsync,rynsync2文はrunと同様にプログラムを実行しますが，runと異なる点は起動したコマンドが終了するまでマクロの実行を待機させる点です。runsyncは秀丸をアイコン状態にして待機させますが、runsync2は秀丸をアイコンにせずに待機させます。

　run文は[その他]-[プログラム実行]と同様に標準入出力のリダイレクトが可能です。もし起動するプログラムの標準出力がリダイレクトされている場合、run文はrunsync文同様に、待機するようになります。runsync文とrunsync2文はリダイレクトはできません。

　プログラムの起動に失敗するとresultがfalseになります。

　例：

run "winfile.exe";

run "hidemaru.exe win.ini";

runsync "cl -c -AS -G2scw -W3 " + $filename


endmacro文
endmacro, endmacroall文

　endmacro文は、現在のマクロの実行を終了します。現在のマクロがexecmacro文により呼び出された場合は呼び出し元のマクロの実行を続行します。

　endmacroall文は、execmacroの呼び出し元も含めてすべてのマクロの実行を終了させます。

　例：

question "続行しますか？";

if( result == no ) endmacro;


execmacro文

　マクロの中から、さらに別のマクロを実行します。起動された側のマクロが終了すると現在のマクロの実行を続行します。

　パラメタでマクロのファイル名を指定してください。

　execmacroされたマクロからさらにexecmacroを実行する場合、execmacroのネストがあまり深くならないように注意してください。

　例：

execmacro "test.mac";


disabledraw文
disabledraw，enabledraw文

　disabledrawは画面の書き換えを禁止します。enabledrawは逆に画面書き換えを許可します。マクロ起動時は許可状態になっています。

　長い編集作業を短時間で終わらせたい場合に，まずdisabledrawして作業を開始し，編集が終わったらenabledrawすると効果的です。ただし，enabledrawを実行するときに画面をすべて書き直すことになるので，短時間で終わる処理をdisabledraw/enabledrawで囲むとかえって処理速度が低下することに注意してください。

例：

disabledraw;

gofiletop;

beginsel;

gofileend;

cut;

enabledraw;

　disabledrawしたのにenabledrawを忘れたままマクロの実行が終了すると，自動的に画面をすべて書き換えます。

　enabledrawが実行された時、カーソルが画面のどの位置に表示されるかは秀丸側が適当に決めてしまいます。これをマクロ側で制御するには、enabledraw文のパラメタで画面の一番上の行番号（ワープロ的に計算した行番号）を指定してください。

例：（検索で見つけた文字列を画面の中央に表示する場合）

#cyScreen = cyscreen;

disabledraw;

search "abc";

enabledraw y - #cyScreen / 2;


disablebreak文

　disablebreak文は，マクロの中断を禁止します。

　秀丸のマクロは実行中に何かキー入力すると「中断しますか？」と聞いてくる仕様になっています。しかし簡単なマクロを繰り返して実行したい場合には２回目のマクロ実行コマンドが中断要求と認識されて不便です。

　そこで，このdisablebreak文をマクロのいちばん最初で実行すると，そのマクロでは中断を一切受け付けなくなります。マクロの最初でないと効果はあまりないので注意してください(ただし，文や空行が先頭にあるのは構いません)｡

　enablebreak文はありません。


disableinvert文
disableinvert, enableinvert文

　disableinvert文は，範囲選択のときの反転表示を禁止します。マクロ実行中の反転表示は目ざわりな場合が多いので，その場合はあらかじめdisableinvertしてから範囲選択すれば，画面上では反転せずに範囲選択されます。enableinvertは、disableinvertを解除します。


disableerrormsg, enableerrormsg文

　disableerrormsg文は，各種のコマンドの中でエラーが発生してもエラーメッセージを表示しないようにします。enableerrormsg文は元に戻します。マクロ起動直後はenableになっています。

　各種のコマンドの中でのエラーとは、例えば以下のような例があります。

　－　appendsaveで指定されたファイルが見つからなかった

　－　showcliphistで、ユーザが何も取り出さずにダイアログを閉じた

　－　その他、「エラー」というタイトルのメッセージボックスが表示される処理すべて

　disableerrormsgを実行しても、エラーが発生した場合にresult==falseになることは変わりありません。disableerrormsg文を実行した場合は以後エラーの処理を正しく行うようにしてください。


ブロック

　秀丸のマクロでは，Ｃ言語と同様に '{'と'}'で複数のマクロコマンドをひとつにまとめることができます。ifやwhileと組み合わせて使います。

例：

if( result == yes ) {

message "ABC";

#a = #a + 1;

}


if文

　if文は，その直後にある条件式が０以外の場合に次のコマンドを実行します。条件式が０で，かつ次のコマンドのうしろにelseがある場合は，elseに続くコマンドを実行します。

　例：

if( result == yes )

message "了解です";

else

message "取り消しです";

　ブロック と組みあわせることもできます。

if( result == yes ) {

message "了解です";

endmacro;

} else {

down;

right;

}

　elseのうしろにifを並べることもできます。

if( result == 1 ) message "1";

else if( result == 2 ) message "2";

else if( result == 3 ) message "3";

else mesage "その他";


while文

　while文は，その直後にある条件式の値が０以外である間，処理をくりかえします。ブロック と組み合わせて使用できます｡

　例：

#a = 10;

while( #a > 0 ) {

down;

#a = #a - 1;

}

　break文 ，continue文 との併用も可能です｡while文はネスト(多重ループ)が可能ですが例えば２重ループを一気に抜ける場合はgoto文 を使用するようにしてください｡


break文

　breakは，whileのループの中から強制的に外に出ます。二重のループの中で実行された場合はひとつ外側に抜け出ます。

　whileの外で実行するとエラーになります。

例：

while( #a != 0 ) {

up;

if( !result ) break;

#a = #a - 1;

}


continue文

　continue文は，while文の先頭まで戻って条件式の評価からやりなおします。whileの外で実行するとエラーになります。

例：

while( #a != 0 ) {

up;

if( !result ) continue;

#a = #a - 1;

}


goto文とラベル

　マクロの処理は上から下へ順番に実行されますが，任意の場所に移動させる場合にgotoとラベルを使います。

　ラベルは，その名のとおり名札です。飛びたい先にラベルを置いておき，gotoでそのラベルを指定するとそこに飛びます。

　ラベルは，適当な英数字が指定できます。ラベルであることが分かるように後ろにコロンを付けください。コロンの後ろにセミコロンは必要ありません。

例：

Label:

message "ABC";

goto Label;


サブルーチン

　秀丸マクロでは，サブルーチンを使うことができます。サブルーチンは，call文で呼ばれます。サブルーチンからの復帰にはreturn文を使います。

　サブルーチンの中ではローカル変数を使うことができます。ローカル変数は，##または$$で始まる変数です。

　サブルーチンにはパラメタとして複数の値を渡すことができます。また，サブルーチンから復帰するときに，値をひとつだけ返すことができます。

　サブルーチンの名前は，ラベルで指定します。

　callは以下のように使います。

call ラベル名 [パラメタ１, パラメタ２, ・・・]

　パラメタは必要に応じて指定してください。ちなみにパラメタの型が文字列型か数値型かの区別はサブルーチンを呼ぶ側と呼ばれる側でしっかりと合わせておく必要があります。秀丸は特に型チェックはしません。

　呼ばれた側では，渡されたパラメタは以下のような変数で参照することができます。

１番目のパラメタ（文字列型の場合）：	$$1

１番目のパラメタ（数値型の場合）：	##1

２番目のパラメタ（文字列型の場合）：	$$2

２番目のパラメタ（数値型の場合）：	##2

以下同様・・・

　returnするときには値を返すことができます。値を返すには，returnの後ろで値を指定します。文字列型を返すか数値型を返すかは呼び出し元と先とで合わせておく必要があります。

　呼び出した側で復帰値を見るには，##returnまたは$$returnという変数を使います。文字列型の場合は$$returnで，数値型の場合は##returnとなります。

　例：

call QuestionSub "テスト";

if( ##return ) beep;

endmacro;

QuestionSub:

question "問い合わせ：" + $$1;

return result;

　callされたサブルーチンからさらにサブルーチンを呼ぶこともできます。最高20回程度重複可能です。


inputpos文

　inputpos文は，ユーザからカーソル位置を入力してもらうための文です。

　この文を実行すると，ユーザはリターンキーを押すまでカーソルを自由に動かせるようになります。リターンキーを押すと，inputposは処理を終了します。

　inputpos実行中は，ウィンドウのキャプションに文字列を表示します。表示する文字列はinputposコマンドのパラメタで指定してください。

　例：

inputpos "削除の開始位置を指定してください。";

　ユーザがカーソル移動した後の位置は，キーワードxとyで参照することができます。

　例：

inputpos "削除の開始位置を指定してください。";

#startx = x;

#starty = y;


menu,mousemenu文
menu，mousemenu, menuarray, mousemenuarray文

　menu, mousemenu, menuarray, mousemenuarray文はポップアップメニューを表示します。ユーザが選択したメニューはresultに設定されます。

　menu, menuarray文は、文字カーソルの近くにメニューを表示し、mousemenu, mousemenuarray文はマウスカーソルの近くにメニューを表示します。

　menu, mousemenu文は、以下のようにメニュー項目の文字列をコンマで区切っていくつでも指定することができます。画面に入りきらないくらい項目が多い場合は自動的に折り返して表示されます。

menu 文字列１, 文字列２, ……;

　１番目の項目が選ばれるとresultは１になり，以下同様に２，３……という値になります。ユーザがESCキーなどで取り消した場合のresultは０になります。

　例：

menu "細い線", "太い線", "＊マーク";

if( result == 0 ) endmacro;

else if( result == 1 ) {

$char = "\x84\x9F";

} else if( result == 2 ) {

$char = "\x84\xAA";

} else {

$char = "＊";

}

　menuarray, mousemenuarray文は、配列変数に格納されている値をメニュー項目とみなしてメニューをします。第１パラメタで配列変数の名前、第２パラメタで項目の数を指定します。

　例：

menuarray $a, 10;

　この例の場合だと、$a[0]から$a[9]の１０個の項目がメニューになって表示されます。第１パラメタには文字列変数の名前以外指定できません。


writeinistr,writeininum文
writeinistr文，writeininum文

　writeinistr，writeininum文は，INIファイルにデータを書きこむ文です。マクロで使う各種パラメタを保存しておくと便利です。

　writeinistrは文字列を保存し，writeininumは数値を保存します。

writeinistr INIファイル名, セクション名, キー名, 文字列

writeininum INIファイル名, セクション名, キー名, 数値

の形で記述してください。

　INIファイル名は、ファイル名だけを書くとWindowsフォルダが自動選択されます。フルパスで書くと、指定したフォルダが選択されます。また、拡張子が.iniである必要はなく、どんな拡張子でもかまいません。

　例：

writeinistr "HIDEMARU.INI", "Option", "RefMark", ">> ";

writeininum "HIDEMARU.INI", "Option", "count", #a + 10;

　これらで設定された値を参照するにはgetininum，getinistr 関数を使います。

　writeinistrで、文字列として指定すべきパラメタ（第４パラメタ）に数値の「0」を指定すると、そのキーがiniファイルから削除されます。同様に、キー名に数値の「0」を指定すると、セクションが削除されます。

　例：

writeinistr "HIDEMARU.INI", "Option", "RefMark", 0;

writeinistr "HIDEMARU.INI", "Option", 0, 0;

　iniファイル名を"hidemaru.ini"にした場合、実際にiniファイルに書き込まず、レジストリに変換して書き込むようになります。これは、16bit版秀丸との互換のためだけにある機能で、秀丸の設定に書き込む場合はwriteregstrまたはwriteregnumを使ってください。


config文

　config文は，秀丸の各種の設定を変更します。設定の内容を文字列で指定してください。以下のような形式となっています。

オプション	機能

a+ a-	タブ文字を表示するかしないかを指定します。

b+ b-	文字を太くするかどうかを指定します。

cb数	背景の色を指定します。

cc数	カーソル行の色を指定します。

cl数	カーソル行に下線を引くよう指定し，その線の色を指定します。

cr数	改行文字の色を指定します。

ct数	文字の色を指定します。数には0～Fが指定できます。各数がどの色に対応するかは「設定」のダイアログボックスを参照してください。

d+ d-	広い行間にするかしないかを指定します。

d数	行間を指定します。0～6を指定できます。

e+  e-	読込むときにEOF制御文字を無視するかどうかを指定します。+で無視します。

f名前	フォントの名前を指定します。

f(名前)	フォントの名前の中に空白がある場合はこのようにしてフォントを指定します。

g+  g-	保存するときにEOF制御文字を付けるかどうかを指定します。+で付けます。

i0 i1 i2 i3 i4	自動インデントを指定します。i0が「しない」，i1が「する」，i2が「全角空白も」，i3が「Ｃ言語インデント」，i4が全角も＆Ｃ言語です。

k+ k-	禁則処理をするかしないかを指定します。

l+ l-	行番号表示をするかしないかを指定します。

m+  m-	バックアップファイルを作成するかどうかを指定します。m+で作成する，m-で作成しないです。

o+  o-	行番号の計算方法を指定します。+でエディタ的、-でワープロ的になります。

r+  r-	フリーカーソルモードを指定します。+でフリーカーソルモードです。

rs+  rs-	ルーラーを表示するかしないかを指定します。

rt+  rt-	+でルーラー表示を８単位にします。-で１０単位になります。

rc数  rc-	ルーラーの色を指定します。-を指定すると文字と同じになります。

rb数  rb-	ルーラーの背景の色を指定します。-を指定すると背景と同じになります。

s数	フォントのサイズを指定します。このサイズはドット数です。設定ダイアログの単位はポイントなので，違う単位であることに注意してください。

t2  t4  t8	タブの文字数を設定する。

u+  u-	カーソル位置の自動復元をするかしないかを指定します。+で「復元する」です。

w数	１行の折り返し文字数を指定します。20～250が指定できます。

y+ y-	Ｃ言語キーワード強調表示をするかしないかを指定します。

p数	ページ番号表示する／しない，１ページの行数を指定します。p0だとページ番号非表示で、それ以外の場合はページ番号表示となります。

　これらのオプションはまとめて指定することができます。まとめて指定するときは，それぞれを空白で区切って指定してください。

　例：

config "fシステム s20 y+ k+ b-";

config "f(ＭＳ 明朝) s32"


setwindowsize文

　現在のウィンドウサイズを文字数単位で指定します。

　setwindowsize 80, 20  といった風に使います。この場合は横８０桁×縦２０行となります。


setwindowpos文

　現在のウィンドウをパラメタで指定された位置に移動します。ウィンドウが最大化されてる場合は何もしません。

　ウィンドウの位置は、画面のピクセル単位で指定します。パラメタを２つ指定した場合はウィンドウの左上の位置、パラメタを４つ指定した場合はウィンドウの左上座標と縦横サイズ（ドット数）の両方が指定できます。

　ウィンドウが画面からはみ出るような位置を指定すると、画面の中に入るように自動的に補正されます。

　例：

setwindowpos 100, 200;

setwindowpos 100, 100, 300, 300;


showwindow文

　現在のウィンドウをパラメタで指定された状態で表示／非表示します。パラメタでは数値を指定してください。秀丸エディタは指定された値をそのままWindows-APIのShowWindowに渡します。

　パラメタの値と意味は以下の通りです。

0	ウィンドウ非表示（SW_HIDE）

1	最大化／アイコン化されたウィンドウを元に戻す

2	アイコン化（SW_SHOWMINIMIZED）

3	最大化（SW_SHOWMAXIMIZED）

　0を指定すると、秀丸エディタのウィンドウが見えなくなります。元に戻すにはshowwindow 1を実行してください。

　2を指定すると、マクロの実行はアイコン化された秀丸上で続行されます。


envchanged文

　秀丸のマクロでは、「設定・動作環境」の内容を変更することができません。しかし、この文を使うとそれと同様のことができるようになります。

　この文は、レジストリから動作環境の内容を再読込みし、現在の秀丸の動作環境を変更します。したがって、「設定・動作環境」の内容を変更したい場合は、まずwriteregstrまたはwriteregnumを使ってレジストリを書き換え、このenvchangedを使って秀丸にその内容を教えてあげてください。

　レジストリの内容については独自に調べてください。(^^;

　レジストリの内容を調べるには、Windows95の場合REGEDIT.EXE、WindowsNTの場合はREGEDT32.EXEを使って、

　　　HKEY_CURRENT_USER\Software\Hidemaruo\Hidemaru

の内容を見てください。

　秀丸V1.50よりも前の秀丸では、動作環境の情報はレジストリではなく、hidemaru.iniに保存されていましたが、従来のwriteinistrやwriteininumを使ってhidemaru.iniを操作していたものは、互換で動くようになっています。（秀丸V2.00からは、動作環境にあった「ルーラー表示」と「行番号の計算方法」は、「設定」に移動してしまったので、互換は働きません）

　「設定」に関しては、設定関連キーワード とconfig文 を使ってください。


loadkeyassign文

　loadkeyassign文は，キー割り当てファイルを読込みます。パラメタでキー割り当てファイルの名前を指定してください。

　例：

loadkeyassign "default.key";


変数の使い方

　秀丸マクロでは，文字列型と数値型の変数を使うことができます。文字列型の変数は文字列を記憶し，数値型の変数は数値を記憶します。

　文字列型変数の扱える文字列は，長さが8000バイト程度までのものなら自由な内容を記憶することができます。ただし，NULL文字を含むことはできません。

　数値型変数は４バイトの符号付きの値を記憶することができます。

　変数名には30文字程度までの適当な英数字を使用することができます。文字列型変数は先頭が$で始まり，数値型変数は#で始まります。変数名は大文字／小文字が区別されます。

　変数名の例：

#number

$top_string_1

#x100

　変数に値を代入するには，=を使います。

#num = 100;

$str = "斉藤秀夫";

　数値型変数に文字列を代入したり，文字列型変数に数値を代入しようとするとエラーになります。

　エラーになる例：

#num = "ABC";

$str = 100 / 4;

　秀丸マクロでは，Ｃ言語と同様にユーザが関数を作ることができるようになっています。これらの関数の中だけでローカルな変数を使いたい場合は，##または$$が先頭に付いた変数を使います。#または$だけで始まる変数は，グローバルな変数として扱われます。

　変数の名前のうしろに角カッコで添え字を付けると、簡単に配列変数を作ることができます。

　例：

#a[0] = 1;

#a[1] = 2;

#a[ #b + 1 ] = 5;

#b = #a[2];

　角カッコを連ねて添え字を増やせば、何次元の配列でも作ることができます。

例：

#a[0][0] = 1;

#a[5][2] = 1;

　秀丸マクロでは，変数を記憶するためのメモリを64Kバイト用意しています。これを越えるような大量の変数を使うとエラーとなります。エラーになるとその場でマクロの実行は中断されてしまいます。配列変数を多用するとこの制限を越えてしまう恐れがあるので注意してください。


式について

　式は，数字や文字列や各種の演算子を使って記述された「一種の値」を表現するもので，それを変数に代入したり，messageコマンドで表示したり，if文の判定に用いたりするのに使います。

　式にも文字列型と数値型があります。また，文字列型から数値型に変換する関数もあります。

　数値型の式は，Ｃ言語とほぼ同じとなってます。

数値

演算子

内部的な値を表現するキーワード

文字列

関数


数値

　数値をそのまま指定するもので，そのまま数値を記述するだけです。普通に記述すると10進数となり，0xを付けると16進数となります。８進数は使えません。

　また，クオートで囲んで文字のコードを指定することもできます。Ｃ言語と違い，漢字のコードも直接指定できます。

　値は４バイトの符号付き整数として扱われます。

　例：

100

-100

0xFFFF

'a'

'漢'


演算子

　秀丸マクロの式では，以下の演算子が使えます。

　　+ - * / % <= >= < > != == && || ! | & ^

　それぞれＣ言語の演算子と共通です。優先順位は，以下のとおりです。| & ^の優先順位がＣ言語と異なるので注意が必要です。

高い <---------> 低い

*	+	<=	&&

/	-	>=	||

%	<	!

|	>

&	!=

^	==

　括弧で囲むと，優先順位が高くなります。また，式は左から右に評価されます。

　!= や <= などの論理演算の結果は，０または１です。if文やwhile文は，Ｃ言語と同様に０か０以外かで判定します。


内部的な値を表現するキーワード

　結果コードと定数

　カーソル関連

　テキスト関連

　範囲選択関連

　ウィンドウ関連

　ファイル名関連

　各種状態関連

　設定関連

　クリップボード関連

　日付と時刻関連


結果コードと定数関連キーワード

result	各種の文の実行結果の結果コードを表します。

yes	１という値です。

no	０という値です。

true	１という値です。

false	０という値です。

eof	－１という値です。

version	秀丸のバージョン番号です。Version 2.11の場合、211という値になります。このキーワードはVersion 2.11から追加されたキーワードです。2.10以下ではエラーになってしまいます。

　一般に、resultの値は成功の場合が１、失敗の場合は０となります。


カーソル関連キーワード

x	カーソルのx座標を表します。カーソルが一番左にいる時が０です。

y	カーソルのy座標を表します。y座標は、現在編集中のテキストの先頭行からワープロ的に行番号を計算した値で、一番上にいる時が０です。

column	カーソルのカラム位置を表します。カラム位置は、論理行頭（直前の改行文字の次）から現在のカーソル位置までの文字数を数えた値です。タブ文字は１文字として数えられます。

lineno	カーソル位置の、エディタ的に計算した行番号を表します。ファイルの先頭が１です。

code	カーソル位置の文字コードを表します。

カーソル位置が漢字の場合は、動作環境で「全角文字を意識する」がｏｎになっていれば漢字コードを正しく返します。例えば全角空白の場合は0x8140になります。

フリーカーソルモードの時に、カーソルが改行文字より後ろに位置する場合はcodeの値は０になります。タブ文字の場合は0x09になりますが、タブ文字と次の文字の間の余白部分に位置する場合は０になります。

改行文字の上の場合は0x0Dになります。ファイルの最後の[EOF]の上の場合は-1（eofという定数と同じ値）になります。


テキスト関連キーワード

return	現在のカーソルの後ろが改行してるかどうかを表します。カーソルの位置する行の右側に改行文字があれば１になり、無ければ（次の行に折り返している場合）０になります。

linecount	現在のファイルの、ワープロ的に計算した行数を表します。新規作成状態の場合は１を返します。

linelen	現在のカーソル位置の行の長さを表します。この値は画面上での１行の長さで、右端で折り返している場合は、行頭から折り返している位置までの長さだけ計算します。タブ文字も、画面上での文字数として計算します。

linelen2	現在のカーソル位置の行の、エディタ的に計算した長さを返します。つまり、論理行頭から改行文字（または[EOF]）までの文字数を計算します。タブ文字は１文字として計算します。


範囲選択関連キーワード

selecting	範囲選択中かどうかを表します。範囲選択中の場合は１、そうでない場合は０です。

rectselecting	BOX範囲選択中かどうかを表します。範囲選択中の場合は１、そうでない場合は０です。

seltopx	範囲選択開始位置のx座標を表します。

seltopy	範囲選択開始位置のy座標を表します。

selendx	範囲選択終了位置のx座標を表します。

selendy	範囲選択終了位置のy座標を表します。

　範囲選択の開始位置と終了位置は、常に、開始位置がファイルの先頭に近いほう、終了位置がファイルの最後に近いほうになっています。

　範囲選択が解除された後も、これらの値は以前の値を保持しています。ただし、ファイルに編集が加えられたりした場合は実際の位置と値の記憶している位置がずれてしまうので注意してください。


ウィンドウ選択関連キーワード
ウィンドウ関連キーワード

windowwidth	ウィンドウの横幅を文字数で表します。左側の余白やスクロールバーなどの外側の部分は含まれていません。行番号表示がｏｎの場合はその部分を含んでいます。

windowheight	ウィンドウの高さを文字数で表します。キャプションやメニューなどの外側の部分は含まれていません。

windowcx	ウィンドウ全体の横幅をピクセル単位で表します。

windowcy	ウィンドウ全体の高さをピクセル単位で表します。

windowposx	ウィンドウの左上の位置のx座標をピクセル単位で表します。

windowposy	ウィンドウの左上の位置のy座標をピクセル単位で表します。

splitstate	ウィンドウの分割の状態を表します。分割されてない場合は０、分割されていて、カーソルが上側にある場合は１、カーソルが下側にある場合は２です。

windowstate	ウィンドウの表示の具合を表します。非表示の場合は０、通常の表示状態の場合は１、アイコン化されている場合は２、最大化されている場合は３です。

cxscreen	画面の横サイズをピクセル単位で表します。

cyscreen	画面の縦サイズをピクセル単位で表します。

xworkarea	画面の作業領域（タスクバーやOfficeショートカットバーを除いた領域）の左上の位置のx座標をピクセル単位で表します。

yworkarea	画面の作業領域の左上の位置のy座標をピクセル単位で表します。

cxworkarea	画面の作業領域の横サイズをピクセル単位で表します。

cyworkarea	画面の作業領域の縦サイズをピクセル単位で表します。


ファイル名関連キーワード

filename	現在編集中のファイル名をドライブ文字も含めたフルパスで表します。ファイル名はすべて小文字に変換されています。

basename	ファイル名の、パスを含まない、ベース名だけを表します。すべて小文字に変換されています。

directory	カレントフォルダをドライブ名も含めたパス名で表します。ルートフォルダでない場合は最後に「\」が付いていません。すべて小文字です。

hidemarudir	hidemaru.exeのフォルダを表します。すべて小文字です。

windir	Windowsのフォルダを表します。

winsysdir	Windowsのシステムフォルダを表します。

filename2	filenameの小文字に変換しないバージョンです。

basename2	basenameの小文字に変換しないバージョンです。

directory2	directoryの小文字に変換しないバージョンです。

filename3	filenameの短縮ファイル名バージョンです。

basename3	basenameの短縮ファイル名バージョンです。

directory3	directoryの短縮ファイル名バージョンです。


各種状態関連キーワード

overwrite	上書きモードか挿入モードかを表します。上書きモードの場合は１、挿入モードの場合は０です。

updated	更新されたかどうかを表します。更新された場合は１、そうでない場合は０です。

anyclipboard	クリップボードに文字列があるかどうかを表します。ある場合は１、無い場合は０です。

imestate	かな漢字変換の状態を表します。かな漢字変換がｏｎなら１、ｏｆｆなら０です。

browsemode	閲覧モードかどうかを表します。閲覧モードの場合は１、そうでない場合は０です。

keypressed	キーが押されたかどうかを表します。disablebreakされた状態でのみ利用可能です。

キーが押されていた場合はそのキーコード、押されてなかった場合は０です。

keypressedが１回実行されると、メッセージキューからキーコードを取り出します。

replay	現在のマクロが連続実行されてるものかどうかを表します。連続実行である場合１、そうでない場合０です。例えば、Ctrl-1によってマクロ実行される場合は、Ctrl-1を２回連続で実行した場合に２回目がreplayがtrueなります。

hidemarucount	現在起動されている秀丸の数を表します。常駐秀丸は数えません。

参照：秀丸管理

searchbuffer	検索バッファの内容を表します。検索バッファは、以前に実行された検索コマンドまたは置換コマンドで検索対象となる文字列を記憶していて、「次候補」または「前候補」コマンドで利用されるものです。

searchoption	検索フラグの値を表します。検索フラグは、以前に実行された検索コマンドまたは置換コマンドのダイアログボックスで指定された各種のオプションを記憶しています。オプションの内容は以下の通りのビットごとの論理和になっています。

単語の検索	ビット０

大文字/小文字の区別	ビット１

置換かどうか	ビット２（置換の場合に１）

置換の場合、問い合わせの有無	ビット３

正規表現	ビット４

あいまい検索	ビット５

ファイル名一覧だけ作成	ビット６（grep用）

次の秀丸も続けて検索	ビット７

参照：setsearch

readonly	上書き禁止かどうかを表します。上書き禁止の場合は１、そうでない場合は０です。

charset	現在の文字コードと改行を表します。

ビット０～ビット５（charset & 63 した値）が文字コードです。

　　新規作成直後(SHIFT-JIS)	0

　　SHIFT-JIS	1

　　Unicode	2

　　EUC	3

　　JIS	4

ビット６が１の場合、改行＝LF

ビット７	が１の場合、改行＝CR

ビット６と７が共に０、または共に１の場合は改行＝CR+LF


設定関連キーワード

　設定関連キーワードは、「その他・設定」のダイアログボックスで指定した内容を参照するためのキーワード類です。

freecursor	フリーカーソルモードかどうかを表します。

tabcount	タブの文字数を表します。２、４、８のいずかの値になります。

width	折り返し文字数を返します。

indentstate	インデントの状態を表します。インデント無しなら０、普通のインデントなら１、全角インデントなら３、Ｃ言語インデントなら５、全角インデント＆Ｃ言語インデントなら７です。

kinsokustate	禁則処理がｏｎかどうかを表します。

hilightstate	Ｃ言語キーワード強調表示がｏｎかどうかを表します。

linespace	行間の広さを表します。行間無しなら０、1/10なら１、1/8なら２、1/6なら３、1/4なら４、1/3なら５、1/2なら６です。

linenostate	行番号の表示がｏｎかどうかを表します。

pagestate	ページ番号の表示がｏｎかどうかを表します。

showtab	タブ文字を表示するかどうかを表します。

tcolor	文字の色をRGB値で表します。例えば白なら0x00FFFFFF、黒なら０になります。具体的な色と値の対応は自分でサンプルマクロを作るなどして調べてください。

bcolor	背景の色をRGB値で表します。

lcolor	カーソル行の下線の色を表します。下線が無い場合は-1となります。

ccolor	カーソル行の色を表します。カーソル行が色指定ではなく下線指定の場合は-1となります。

rcolor	改行文字の色を表します。

fontname	フォントのフェース名を表します。

fontsize	フォントのサイズ（高さ）を表します。単位はピクセル数（ドット数）です。

boldstate	太文字かどうかを表します。

backup	バックアップファイルの作成がｏｎかどうかを表します。

showruler	ルーラー表示がｏｎかどうかを表します。

tabruler	ルーラー表示が８単位のとき１、１０単位のとき０になります。

rulercolor	ルーラーの色をRGB値で表します。文字と同じの場合は-1になります。

rulerbackcolor	ルーラーの背景の色をRGB値で表します。背景と同じの場合は-1になります。

correctlineno	行番号の計算方法がエディタ的のとき１になります。ワープロ的の場合は０になります。

ignoreeof	読込むときにEOFを無視するかどうか。

savewitheof	保存するときにEOFを付けるかどうか。


クリップボード関連キーワード

getclipboard	クリップボードから１行分の文字列を取り出して、それを表します。

参照：クリップボードと変数とのやりとり


日付と時刻関連キーワード

date	現在の日付を表します。"92/10/22(月)"のような文字列形式で返します。

time	現在の時刻を表します。"22:30:45"のような文字列形式で返します。

tickcount	Windowsが起動されてからの経過時間をミリ秒単位で表します。


文字列

　文字列は，ダブルクォーテーションで囲みます。

　例：

"ABC"

　ダブルクォーテーション記号そのものや\マークは，\を付けて指定します。

　例：

"これは,\"文字列\"です。"

"\\記号"

　タブ文字は\t，改行文字は\n で指定できます。

　例：

insert "\n";

　文字コードを指定したい場合は，\xを使って16進数で指定します。

　例：

"文字コード４１は,\x41です。"

　文字列の演算としては，＋だけが使えます。＋は文字列を連結します。

　例：

message $a + "個";


関数

leftstr( s1, n1 )	文字列の左側部分

rightstr( s1, n1 )	文字列の右側部分

midstr( s1, n1, n2 )	文字列の中央部分

strlen( s1 )	文字列の長さ

gettext( x1, y1, x2, y2 )	文字列取り込み

char( n1 )	数値から文字への変換

ascii( s1 )	文字から数値への変換

str( n1 )	数値を文字列に変換

val( s1 )	文字列を数値に変換

strstr( s1, s2 )	文字列から文字列を検索

getinistr( s1, s2, s3 )	iniファイルから文字列取得

getininum( s1, s2, s3 )	iniファイルから数値取得

input( s1, s2 )	ユーザからの文字列入力

inputchar( s1 )	ユーザからのキー入力

iskeydown( n1 )	キーボードの状態を取得

getenv( s1 )	DOS環境変数の取得

findhidemaru( s1 )	秀丸の検索

hidemaruhandle( n1 )	秀丸のハンドルの取得

hidemaruorder( n1 )	秀丸の番号の取得

dderequest( s1 )	DDEのデータの要求

findwindow	ウィンドウの検索

findwindowclass	ウィンドウをクラス名で検索

sendmessage	メッセージの送信

existfile	ファイルが存在するかどうか

getregstr( s1 )	レジストリから文字列取得

getregnum( s1 )	レジストリから数値取得


leftstr関数
leftstr( s1, n1 ) 関数

　s1の左側のn1文字を返します。全角文字は２文字として数えます。

　str1の長さがnum1より小さい場合は，str1がそのまま返されます。

　返す値は文字列型です。


rightstr関数
rightstr( s1, n1 ) 関数

　s1の右側のn1文字を返します。s1の長さがn1より小さい場合は，s1がそのまま返されます。

　返す値は文字列型です。


midstr関数
midstr( s1, n1, n2 ) 関数

　s1の左側からn1番目のn2文字を返します。n1は０から数えてください。n1が０の場合はleftstr(s1,n2)と同じ結果となります。

　返す値は文字列型です。


strlen関数
strlen( s1 ) 関数

　str1の長さを返します。返す値は数値型です。全角文字は２文字として数えます。

　返す値は数値型です。


gettext関数
gettext( x1, y1, x2, y2 ) 関数

　現在編集しているファイルのx1，y1からx2，y2の範囲にある文字列を返します。文字列の長さが長すぎるとエラーになります。

　x，y座標の指定のしかたはmoveto文と同じです。

　返す値は文字列型です。


char関数
char( n1 ) 関数

　n1の文字コードの文字を文字列にして返します。漢字のコードを指定すれば漢字の文字列になります。

　返す値は文字列型です。

例：

char( 0x41 )        … "A"が返ってきます。


ascii関数
ascii( s1 ) 関数

　s1の先頭の文字の文字コード（数値）を返します。charと逆の関数です。

　返す値は数値型です。


str関数
str( n1 ) 関数

　n1を文字列に変換します。例えばn1が100の場合，返す値は"100"となります。

　返す値は文字列型です。


strstr関数
strstr( s1, s2 ) 関数

　str1からstr2を検索し，見つかった場合はその位置を返します。先頭が０です。見つからなかった場合は-１を返します。

　返す値は数値型です。


val関数
val( s1 ) 関数

　s1を数値に変換します。例えばs1が"100"の場合，返す値は100となります。数値に変換できない場合は０が返ります。

　返す値は数値型です。


getinistr,getininum関数
getinistr( s1, s2, s3 ) 関数, getininum( s1, s2, s3 ) 関数

　getinistrは、INIファイルから文字列を取りだします。s1がiniファイル名、s2がセクション名、s3がキー名です。

　返す値は文字列型です。

　getininumは、INIファイルから数値を取りだします。s1がiniファイル名、s2がセクション名、s3がキー名です。取り出した値が数値に変換不能な場合は０が返ってきます。

　返す値は数値型です。

　INIファイル名は、ファイル名だけを書くとWindowsフォルダが自動選択されます。フルパスで書くと、指定したフォルダが選択されます。また、拡張子が.iniである必要はなく、どんな拡張子でもかまいません。

　iniファイル名を「hidemaru.ini」にした場合、実際にiniファイルからは読み込まず、レジストリから変換して読み込むようになります。これは、16bit版秀丸との互換のためだけにある機能で、秀丸の設定を読み込む場合はgetregstrまたはgetregnumを使ってください。


input関数
input( s1, s2 ) 関数

　s1をメッセージとして表示し，ユーザから文字列を入力してもらい，それをそのまま返します。s2は、デフォルトの値としてユーザが入力するエディットコントロールの中に最初から表示されます。

　s2は省略できます。

　返す値は文字列型です。


inputchar関数
inputchar( s1 ) 関数

　s1をタイトルバーに表示し，ユーザから文字を入力してもらい，その文字コードを返します。入力した文字は画面には表示されません。カーソル移動キーが押された場合は文字コードは，

左 ... 0x1C

上 ... 0x1D

右 ... 0x1E

下 ... 0x1F

となります。


iskeydown関数
iskeydown( n1 ) 関数

　指定されたキーの状態を取得する関数です。

　n1にキーコードを入れて呼び出すと、そのキーが押されている場合は 1、そうでない場合は 0 を返します。

　主なキーコードは以下の通りです。このキーコードは、inputcharが返す値とは違う値なので注意してください。

Shift	0x10

Ctrl	0x11

Alt	0x12

左	0x25

上	0x26

右	0x27

下	0x28

0～0	0x30～0x39

A～Z	0x41～0x5A

　上記にないキーコードは、自分で調べてください。→調べるマクロ

　実はこの関数は、WindowsのAPIでる GetKeyState() を呼び出しているだけです。開発者の方は、APIのヘルプの仮想キーコードの一覧を見るといいです。

　この関数を利用すれば、キー割り当てで、たくさんのキーに同じマクロを割り当ててもマクロファイル内で分岐する処理が可能になります。

　たとえば、Ctrl+上,下,左,右のキーに全て「マクロ1」を割り当てます。そして、「マクロ1」にはtest.macを登録します。そして、test.mac内部は、

if( iskeydown(0x25) ) { 「←」の処理 }

if( iskeydown(0x26) ) { 「↑」の処理 }

if( iskeydown(0x27) ) { 「→」の処理 }

if( iskeydown(0x28) ) { 「↓」の処理 }

というふうにすれば、Ctrl + 矢印キー が押されたときの処理は、すべてtest.macが管理できることになります。

注意：マクロ起動直後のキー状態が取得できるのは、マクロ実行開始から１秒以内です。また、１秒以内であっても以下の関数or文を呼んだ後では起動直後のキー状態は取得できません。

keypressed, ddewaitadvice, localgrep, runsync, menu系文


iskeydownの返す値を調べるマクロの例

iskeydownの返す値を調べるマクロの例です

newfile;

call GetKeyState;

$prev = $$return;

Loop:

call GetKeyState;

if( $prev != $$return ) {

insert $$return;

insertreturn;

$prev = $$return;

}

goto Loop;

GetKeyState:

$$a = "";

##i = 1;

while( ##i <= 0x91 ) {

if( iskeydown( ##i ) ) {

$$a = $$a + str( ##i ) + " ";

}

##i = ##i + 1;

}

return $$a;


getenv関数
getenv( s1 ) 関数

　str1に対応する環境変数の値を返します。

例：

#path = getenv( "include" );


existfile関数
existfile( s1 ) 関数

　s1というファイルが存在するかどうかを返します。

　存在する場合はtrue、存在しない場合はfalseです。

　返す値は数値型です。


DDE関連マクロ

　秀丸エディタには、DDEクライアントを実現するためのマクロの文や関数があります。

ddeinitiate $app, $topic　　（文）

　秀丸をクライアントとするＤＤＥトランザクションを開始します。$appがアプリケーション名で、$topicがトピック名です。

　ddeトランザクションは現在の秀丸だけに有効です。nexthidemaru等でアクティブウィンドウを切り替えるとddeトランザクションは自動的に終了させられてしまいます。

　複数のＤＤＥサーバと同時にトランザクションを開設することはできません。

　成功すると終了コードがtrueになり、失敗するとfalseになります。

ddeterminate　　（文）

　ddeinitiateしたトランザクションを終了します。ddeterminateしなくても、マクロが終了したり、nexthidemaruなどでアクティブウィンドウが切り替わると自動的にDDEトランザクションは終了します。

ddeexecute $exec　　（文）

　DDEサーバにEXECUTEコマンドを送信します。

　成功すると終了コードがtrueになり、失敗するとfalseになります。

ddepoke $item, $param　　（文）

　DDEサーバにデータを送ります。

　成功すると終了コードがtrueになり、失敗するとfalseになります。

dderequest( $item ) 関数

　DDEの相手にデータを要求します。成功すると、受け取ったデータを返します。失敗するとマクロエラーとなってしまいます。

　返す値は文字列型です。

ddestartadvice $item, $name　　（文）

　DDEサーバとの間でアドバイスループを開始します。アドバイスループのアイテム名は$itemです。サーバ側からデータが渡されると、その値は$nameで指定される変数に格納されます。$nameの所には文字列型のグローバル変数名を指定する必要があります。

　アドバイスループは１つしか作ることができません。

ddestopadvice $item　　（文）

$itemのアドバイスループを終了させます。$itemはddestartadviceした時に指定したアイテム名を指定する必要があります。

ddewaitadvice $item, #timeout　　（文）

　DDEサーバから$itemのアドバイスデータが届くのを待ちます。#timeoutはタイムアウトで、ここで指定した時間を待ってもデータが届かない場合はデータを受け取らずにddewaitadviceを終了させます。

　タイムアウトの場合はresult==falseになり、ddestartadviceで指定した変数には何も格納されません。

　#timeoutの値はミリ秒単位で指定します。

　ddewaitadviceを実行中は秀丸エディタは凍り付いたような状態になります。

findwindow( $name ) 関数

　$nameで指定される文字列と同じキャプションのウィンドウを探してそのウィンドウハンドルを返します。

　返す値は数値型です。見つからなかった場合は0となります。該当するウィンドウが複数見つかった場合でも、１つしか返しません。

findwindowclass( $name ) 関数

　$nameで指定される文字列と同じクラス名のウィンドウを探してそのウィンドウハンドルを返します。

　返す値は数値型です。見つからなかった場合は0となります。該当するウィンドウが複数見つかった場合でも、１つしか返しません。

sendmessage( #handle, #message, #wParam, #lParam ) 関数

　メッセージを送ります。送った先のウィンドウがメッセージボックスやダイアログボックスを出すとマウスが死んでしまうので注意してください。その他、使い方を誤るとWindowsを死なせてしまうこともあるので注意して下さい。

　メッセージの値やwParam、lParamの値については各自で調べてください。

　返す値は、Windows-APIのSendMessage関数の復帰値そのままで、数値型です。

例（WM_SYSCOMMAND SC_CLOSEを送る例）

　#result = sendmessage( #handle, 0x0112, 0xF060, 0 );


クリップボードと変数のやりとり

　秀丸では、変数とクリップボードとの間でデータをやりとりするためのマクロの文や値が用意されています。

beginclipboardread     （文）

　クリップボードからのデータの取り込みを開始することを宣言します。getclipboardといっしょに使います。

getclipboard （値）

　クリップボードから１行分のデータを取り出し、それを返します。'\x0D'は除去されますが、'\x0A'は行末についてきます。ただし、クリップボードデータの最後の部分が改行で終わっていない場合は、'\x0A'無しでデータが返ってきます。

　getclipboardを使うには、まずbeginclipboardreadを実行しないといけません。beginclipboardreadを実行した直後のgetclipboardの値はクリップボード内データの１行目で、２回目の値は２行目で、以下、３行目、４行目とデータを受けてることができます。

　クリップボードの最後までデータを取り出し終わるとgetclipboardの返す値は""となります。

　使用例：（クリップボードの内容を$a[0～]の配列に取り込む例

    beginclipboardread;

    #i = 0;

    $a[#i] = getclipboard;

    while( $a[#i] != "" ) {

        #i = #i + 1;

        $a[#i] = getclipboard;

    }

　クリップボード内に１行の長さが４ｋバイトを越える行があるとその行は４ｋバイトでぶっちぎられてしまいます。

　クリップボードのデータを配列変数に取り込むと変数用のメモリがいっぱいになる恐れがあります。いっぱいになってしまうと秀丸マクロの実行はその場でエラーになって中断してしまいます。

setclipboard $str    （文）

　式の値をクリップボードに設定します。

　例：  setclipboard $a;

　改行も含めてクリップボードに入れたい場合は

　    setclipboard $a + "\x0D\x0A";

　のように使う必要があります。

addclipboard $str     （文）

　現在のクリップボードのデータに式の値を追加します。

　例：

    setclipboard $a[0];

    #i = 1;

    while( $a[#i] != "" ) {

        addclipboard $a[#i];

        #i = #i + 1;

    }


秀丸管理

　複数起動した秀丸を管理するためのマクロの文があります。

hidemarucount:       （値）

　現在稼動している秀丸の数を返します。常駐秀丸は数えません。

例：

        #c = hidemarucount;

findhidemaru( ファイル名 ) （関数）

　ファイル名で指定して秀丸がいるかどうかを調べ、いる場合はそのウィンドウの番号を返します。いない場合は-1となります。番号とは、秀丸のウィンドウを上から順に数えた番号になっています。

　自分自身はfindhidemaruの対象とはなりません。（自分自身は常に０番目です）

　ファイル名には、ドライブ名から始まるパス名も、ファイル名本体だけも、どちらでも指定してかまわいません。ただし、ファイル名本体だけしか指定しない場合は目的とするファイルとは別のフォルダの同名ファイルを検出してしまうかもしれません。

　例：  if( findhidemaru( "client.cpp" ) == -1 ) {

　          openfile "client.cpp";

setactivehidemaru:   （文）

　アクティブな秀丸を指定します。マクロの実行もそちらのウィンドウに移動します。

　パラメタとしてウィンドウの番号か、またはハンドルが指定できます。

例：

        setactivehidemaru 1;

        setactivehidemaru findhidemaru( "client.cpp" );

hidemaruhandle( 番号 ):  （関数）

　ウィンドウの番号からウィンドウハンドルを得ます。

　ウィンドウの番号は、単なるウィンドウの重なりの番号なので、nexthidemaruやsetactivehidemaruを実行すると対応が変ってしまいます。そこで、nexthidemaru等を使う場合はハンドルを使うようにした方がいいです。

例：

        #handle = hidemaruhandle( findhidemaru( "client.cpp" ) );

hidemaruorder( ハンドル ):  （関数）

hidemaruhandleの逆で、ハンドルからウィンドウ番号を得る関数です。

　例：

        #order = hidemaruorder( #handle );

closehidemaru 番号　　　　　（文）

　番号（ハンドルも可）で指定した秀丸を終了させます。ただし、自分自身を指定することはできません。

　指定した秀丸がまだファイルを保存してない場合はclosehidemaruは失敗します。

　closehidemaruは終了コードとして、成功した場合はtrue、失敗した場合はfalseを返します。

　例：

　      #a = findhidemaru( "abc.txt" );

　      if( #a == -1 ) {

　          message "abc.txtはいません";

　          endmacro;

　      }

　      closehidemaru #a;

　      if( !result ) message "abc.txtの終了失敗です。";

closehidemaruforced 番号　　　　　（文）

　closehidemaruと同様に秀丸を終了させます。ただし、こちらは「(更新)」のついたファイルの場合でもエラーにならずに強制的に（保存せずに）終了させます。

basename, filename, directoryの隠し機能

　basename, filename, directoryは、その後ろに角カッコで添え字を付けて、現在の秀丸（アクティブな秀丸）以外の秀丸からも値を得ることができるようになっています。

　角カッコの中には、ウィンドウ番号でもウィンドウハンドルでも両方指定することができます。

例：

$name = basename[2];

if( $name == "abc.txt" ) closehidemaru 2;

ウィンドウ番号と、ウィンドウハンドル

　ウィンドウ番号とは、秀丸ウィンドウの重なり具合によって決まる番号です。現在マクロを実行している秀丸は、先頭にいるはずなので、この秀丸のウィンドウ番号は０です。その後ろに位置する秀丸のウィンドウ番号は１です。さらにその後ろが２です。

　nexthidemaruコマンドを使うと、一番後ろの秀丸が一番手前に移動します。

　prevhidemaruコマンドを使うと、現在の秀丸は一番後ろに移動し、代わりにウィンドウ番号１のウィンドウが手前に表示されます。

　ウィンドウハンドルは、ウィンドウを識別するための値です。ウィンドウ番号は、nexthidemaru等で順番が変ると変化しますが、ウィンドウハンドルは変化しません。


openreg/createreg/closereg文
openreg文, createreg文, closereg文

　openreg/createregは、レジストリをオープンします。第一パラメタでルートとなるキー名を指定し、第２パラメタでサブキー名を指定します。

ルートとなるキー名としては、以下の文字列が指定可能です。

"CLASSESROOT"	... HKEY_CLASSES_ROOTに対応

"CURRENTUSER"	... HKEY_CURRENT_USERに対応

"LOCALMACHINE"	... HKEY_LOCAL_MACHINEに対応

"USERS"	... HKEY_USERSに対応

例：

openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env"

　openregは、指定されたサブキーが存在しない場合にエラーとなります。createregは、指定されたサブキーが存在しない場合は新たに作成してからオープンします。

　オープンに成功すると結果コードは1になり、失敗すると0になります。

　closeregは、オープンしたレジストリをクローズします。複数のレジストリを同時にオープンすることはできません。


getregstr,getregnum関数
getregstr( s1 )関数, getregnum( s1 )関数

　オープンされたレジストリから値を取り出して指定された変数に代入します。

　s1に値の名前を指定します。

　getregstrは、REG_SZ型の値を取り出します。返す値は文字列型です。

　getregnumは、REG_DWORD型の値を取り出します。返す値は数値型です。

　これ以外の型の値を取り出すことはできません。

　標準の値を獲得したい場合は、文字列に何も指定しないで呼んでください。

例：

$s = getregstr( "Path" );

#n = getregnum( "Count" );


writeregstr/writeregnum文
writeregstr文,writeregnum文

　writeregstr/writeregnum文は、レジストリに値を書き込みます。第一パラメタで値の名前を指定し、第二パラメタで値を指定します。

　writeregstr文はREG_SZ型の値を書き込み、writeregnum文はREG_DWORD型の値を書き込みます。

例：

writeregstr "Path", "c:\users\hm32"

writeregint "Count", 100