サクラエディタで編集中のスクリプトを実行

編集中のスクリプトを実行するのに、外部コマンド実行で

wscript.exe "$F"

とすればできるけど、ショートカットキー一発で実行したく、以前OtbEditで書いたスクリプトを少し書き換えてマクロに登録しとりあえずできた。


しかし後になってわかったことだが、メニューにブラウズというコマンドが。勘違いかもしれんが、以前使っていた時はなかった気がする。てっきりこのコマンドはブラウザで開くのかと思ってたら、編集中のファイルを関連付けで開くもので、スクリプトもすんなり起動。全くもって無駄な事をした。


それから、選択範囲のスクリプトを実行するマクロがWikiとやらにアップされていたけど、なぜかダウンロードできず。仕方がないので、どんなもんか知らんけど自分でそれっぽいJScriptのマクロを書いてみた。


どうせならVBScriptもできるようにと、欲張ってはみたけれどJScriptでエラーになった場合にScriptControlを使ってVBScriptを実行する以外思い浮かばず、その結果どちらともエラーになった場合、両方のエラーメッセージを出さざるを得なくなり、ちと鬱陶しいマクロに。

サクラエディタのマクロはWScript.〜が使えない。WSHではないの?知らんけど。
だからJScriptの場合WSH.echoが使えないからecho('---')でメッセージが出るようにした。

追記

サクラエディタの関数で便利そうなのを覚えた。
上のマクロの実行で、JScriptの場合

instext(1 + 1);  //実行した選択範囲を2に書き換える
instext('test');  //実行した選択範囲をtestに書き換える

traceout(1 + 1); //アウトプットに2を書き込む
traceout('test'); //アウトプットにtestを書き込む

instextはカーソル位置に引数のtextを書き込むらしい。


VBScriptの場合はScriptControlを使っているからか、サクラエディタの関数が使えない。あとWScript.sleepなども使えない。よくわからんね。


追記

JScriptのみ実行するマクロ。上記と同様WScript.echoの替わりにechoが使える。

var b9mep = getselectedstring(0);
	if (b9mep) {
		var e8axl = new ActiveXObject('wscript.shell');
		var echo = function(str){wss.popup(str, 0, '確認')}
		eval(b9mep);
		e8axl = null;
	}


マクロをVBScriptと分けた方が良いと思ってVBScript版も書いてみたが、どうしても実行できなかった。Win98だからか?

追記

VBScriptがなぜ出来なかったか判明。

option explicit
dim a89bc
a89bc = getselectedstring(0)
if a89bc <> "" then
	execute a89bc
end if

これで出来た。
if a89bc thenとしてたからだった。あれ、VBScriptはこれじゃだめだったけか?すっかり忘れた。まぁいいや、出来たからスッキリした。