<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=202.215.166.72</id>
	<title>MeryWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=202.215.166.72"/>
	<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/202.215.166.72"/>
	<updated>2026-06-14T01:16:37Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1123</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1123"/>
		<updated>2013-08-20T12:02:11Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
&#039;&#039;&#039;menu.json&#039;&#039;&#039; は，&#039;&#039;&#039;menu.js&#039;&#039;&#039; と同じフォルダに置いてください．&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&#039;&#039;&#039;menu.js&#039;&#039;&#039; と同じフォルダに置いてください．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(ScriptFullName) + &amp;quot;\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
メニューを定義するファイルです．値が Object になる式で記述します．&lt;br /&gt;
Object のプロパティ（名）がメニューに表示される項目，&lt;br /&gt;
その値がメニュー選択時の実行内容になります．&lt;br /&gt;
&lt;br /&gt;
実行される内容は，値の型によって異なりますが，詳細は下のサンプルのコメントを参考にしてください．&lt;br /&gt;
&lt;br /&gt;
関数定義や変数への代入を，コンマ演算子を使って，前に並べておくこともできます．&lt;br /&gt;
（ちょっとキタナい（笑））&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,  	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 20:39 (JST)&lt;br /&gt;
&lt;br /&gt;
== コメント ==&lt;br /&gt;
* 実行中マクロのフルパスは ScriptFullName で参照できます．(ks)&lt;br /&gt;
* ありがとうございます．ScriptFullName を使って書き直してみました．(aliquis)&lt;br /&gt;
&lt;br /&gt;
== 更新履歴 ==&lt;br /&gt;
* libdir を，マクロのパスから取得するように変更しました．--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月20日 (火) 21:02 (JST)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1122</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1122"/>
		<updated>2013-08-20T11:59:36Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: /* コメント */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
&#039;&#039;&#039;menu.json&#039;&#039;&#039; は，&#039;&#039;&#039;menu.js&#039;&#039;&#039; と同じフォルダに置いてください．&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&#039;&#039;&#039;menu.js&#039;&#039;&#039; と同じフォルダに置いてください．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(ScriptFullName) + &amp;quot;\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
メニューを定義するファイルです．値が Object になる式で記述します．&lt;br /&gt;
Object のプロパティ（名）がメニューに表示される項目，&lt;br /&gt;
その値がメニュー選択時の実行内容になります．&lt;br /&gt;
&lt;br /&gt;
実行される内容は，値の型によって異なりますが，詳細は下のサンプルのコメントを参考にしてください．&lt;br /&gt;
&lt;br /&gt;
関数定義や変数への代入を，コンマ演算子を使って，前に並べておくこともできます．&lt;br /&gt;
（ちょっとキタナい（笑））&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,  	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 20:39 (JST)&lt;br /&gt;
&lt;br /&gt;
== コメント ==&lt;br /&gt;
* 実行中マクロのフルパスは ScriptFullName で参照できます．(ks)&lt;br /&gt;
* ありがとうございます．ScriptFullName を使って書き直してみました．(aliquis)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1121</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1121"/>
		<updated>2013-08-20T11:58:32Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: libdir をマクロのパスから取得するように変更しました．&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
&#039;&#039;&#039;menu.json&#039;&#039;&#039; は，&#039;&#039;&#039;menu.js&#039;&#039;&#039; と同じフォルダに置いてください．&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&#039;&#039;&#039;menu.js&#039;&#039;&#039; と同じフォルダに置いてください．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(ScriptFullName) + &amp;quot;\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
メニューを定義するファイルです．値が Object になる式で記述します．&lt;br /&gt;
Object のプロパティ（名）がメニューに表示される項目，&lt;br /&gt;
その値がメニュー選択時の実行内容になります．&lt;br /&gt;
&lt;br /&gt;
実行される内容は，値の型によって異なりますが，詳細は下のサンプルのコメントを参考にしてください．&lt;br /&gt;
&lt;br /&gt;
関数定義や変数への代入を，コンマ演算子を使って，前に並べておくこともできます．&lt;br /&gt;
（ちょっとキタナい（笑））&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,  	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 20:39 (JST)&lt;br /&gt;
&lt;br /&gt;
== コメント ==&lt;br /&gt;
* 実行中マクロのフルパスは ScriptFullName で参照できます．(ks)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1116</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1116"/>
		<updated>2013-08-19T11:40:33Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: /* menu.json */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
いずれのファイルもインストールしたフォルダの下の &#039;&#039;&#039;My Macros&#039;&#039;&#039; の下におきます．&lt;br /&gt;
（マクロの中でそのマクロファイルのパスを取得する方法が分からなかったので，&#039;&#039;&#039;My Macros&#039;&#039;&#039; 決め打ちの，ちょっと不細工なコードになっています）&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&#039;&#039;&#039;menu.json&#039;&#039;&#039; も呼び出す他のマクロも &#039;&#039;&#039;My Macros&#039;&#039;&#039; に入れておきます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(Editor.FullName) + &amp;quot;\\My Macros\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
メニューを定義するファイルです．値が Object になる式で記述します．&lt;br /&gt;
Object のプロパティ（名）がメニューに表示される項目，&lt;br /&gt;
その値がメニュー選択時の実行内容になります．&lt;br /&gt;
&lt;br /&gt;
実行される内容は，値の型によって異なりますが，詳細は下のサンプルのコメントを参考にしてください．&lt;br /&gt;
&lt;br /&gt;
関数定義や変数への代入を，コンマ演算子を使って，前に並べておくこともできます．&lt;br /&gt;
（ちょっとキタナい（笑））&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,  	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 20:39 (JST)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1115</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1115"/>
		<updated>2013-08-19T11:39:01Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: /* menu.json */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
いずれのファイルもインストールしたフォルダの下の &#039;&#039;&#039;My Macros&#039;&#039;&#039; の下におきます．&lt;br /&gt;
（マクロの中でそのマクロファイルのパスを取得する方法が分からなかったので，&#039;&#039;&#039;My Macros&#039;&#039;&#039; 決め打ちの，ちょっと不細工なコードになっています）&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&#039;&#039;&#039;menu.json&#039;&#039;&#039; も呼び出す他のマクロも &#039;&#039;&#039;My Macros&#039;&#039;&#039; に入れておきます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(Editor.FullName) + &amp;quot;\\My Macros\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
メニューを定義するファイルです．値が Object になる式で記述します．&lt;br /&gt;
Object のプロパティ（名）がメニューに表示される項目，&lt;br /&gt;
その値がメニュー選択時の実行内容になります．&lt;br /&gt;
&lt;br /&gt;
実行される内容は，値の型によって異なりますが，詳細は下のサンプルのコメントを参考にしてください．&lt;br /&gt;
&lt;br /&gt;
関数定義や変数への代入を，コンマ演算子を使って，前に並べておくこともできます．&lt;br /&gt;
（ちょっとキタナい（笑））&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,  	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティをを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 20:39 (JST)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1114</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1114"/>
		<updated>2013-08-19T11:36:29Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: /* menu.json */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
いずれのファイルもインストールしたフォルダの下の &#039;&#039;&#039;My Macros&#039;&#039;&#039; の下におきます．&lt;br /&gt;
（マクロの中でそのマクロファイルのパスを取得する方法が分からなかったので，&#039;&#039;&#039;My Macros&#039;&#039;&#039; 決め打ちの，ちょっと不細工なコードになっています）&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&#039;&#039;&#039;menu.json&#039;&#039;&#039; も呼び出す他のマクロも &#039;&#039;&#039;My Macros&#039;&#039;&#039; に入れておきます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(Editor.FullName) + &amp;quot;\\My Macros\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
メニューを定義するファイルです．値が Object になる式で記述します．&lt;br /&gt;
Object のプロパティ（名）がメニューに表示される項目，&lt;br /&gt;
その値がメニュー選択時の実行内容になります．&lt;br /&gt;
&lt;br /&gt;
実行される内容は，値の型によって異なりますが，詳細は下のサンプルのコメントを参考にしてください．&lt;br /&gt;
&lt;br /&gt;
関数定義や変数への代入を，コンマ演算子を使って，前に並べておくこともできます．&lt;br /&gt;
（ちょっとキタナい（笑））&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティをを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 19:15 (JST)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1113</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1113"/>
		<updated>2013-08-19T11:30:28Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
いずれのファイルもインストールしたフォルダの下の &#039;&#039;&#039;My Macros&#039;&#039;&#039; の下におきます．&lt;br /&gt;
（マクロの中でそのマクロファイルのパスを取得する方法が分からなかったので，&#039;&#039;&#039;My Macros&#039;&#039;&#039; 決め打ちの，ちょっと不細工なコードになっています）&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&#039;&#039;&#039;menu.json&#039;&#039;&#039; も呼び出す他のマクロも &#039;&#039;&#039;My Macros&#039;&#039;&#039; に入れておきます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(Editor.FullName) + &amp;quot;\\My Macros\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティをを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 19:15 (JST)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1112</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1112"/>
		<updated>2013-08-19T11:29:48Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: /* menu.js */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
いずれのファイルもインストールしたフォルダの下の &#039;&#039;&#039;My Macro&#039;&#039;&#039; の下におきます．&lt;br /&gt;
（マクロの中でそのマクロファイルのパスを取得する方法が分からなかったので，&#039;&#039;&#039;My Macro&#039;&#039;&#039; 決め打ちの，ちょっと不細工なコードになっています）&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&#039;&#039;&#039;menu.json&#039;&#039;&#039; も呼び出す他のマクロも &#039;&#039;&#039;My Macros&#039;&#039;&#039; に入れておきます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(Editor.FullName) + &amp;quot;\\My Macros\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティをを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 19:15 (JST)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1111</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1111"/>
		<updated>2013-08-19T11:27:42Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: /* menu.js */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
いずれのファイルもインストールしたフォルダの下の &#039;&#039;&#039;My Macro&#039;&#039;&#039; の下におきます．&lt;br /&gt;
（マクロの中でそのマクロファイルのパスを取得する方法が分からなかったので，&#039;&#039;&#039;My Macro&#039;&#039;&#039; 決め打ちの，ちょっと不細工なコードになっています）&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
マクロの本体です．&#039;&#039;&#039;eval&#039;&#039;&#039; を多用していてちょっとキタナいです（笑）．&lt;br /&gt;
&lt;br /&gt;
メニューの定義は，別途 &#039;&#039;&#039;menu.json&#039;&#039;&#039; に記述します．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(Editor.FullName) + &amp;quot;\\My Macros\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティをを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 19:15 (JST)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1110</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1110"/>
		<updated>2013-08-19T10:15:33Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;お盆休みにマクロ作成に挑戦してみました．&lt;br /&gt;
関数やマクロをメニュー形式で呼び出すためのマクロです．&lt;br /&gt;
&lt;br /&gt;
マクロの本体（コード）のファイル &#039;&#039;&#039;menu.js&#039;&#039;&#039; と，メニューそのものをオブジェクトリテラルで定義するファイル &#039;&#039;&#039;menu.json&#039;&#039;&#039; から成ります．&lt;br /&gt;
いずれのファイルもインストールしたフォルダの下の &#039;&#039;&#039;My Macro&#039;&#039;&#039; の下におきます．&lt;br /&gt;
（マクロの中でそのマクロファイルのパスを取得する方法が分からなかったので，&#039;&#039;&#039;My Macro&#039;&#039;&#039; 決め打ちの，ちょっと不細工なコードになっています）&lt;br /&gt;
&lt;br /&gt;
== menu.js ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(Editor.FullName) + &amp;quot;\\My Macros\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティをを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 19:15 (JST)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1109</id>
		<title>マクロ・関数をメニューで呼び出す</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%BB%E9%96%A2%E6%95%B0%E3%82%92%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&amp;diff=1109"/>
		<updated>2013-08-19T10:08:57Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: ページの作成：「 == menu.js == &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt; #title = &amp;quot;Menu&amp;quot;  var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),     libdir = fso.GetParentFolderName(Editor.FullNa...」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== menu.js ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;Menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;),&lt;br /&gt;
    libdir = fso.GetParentFolderName(Editor.FullName) + &amp;quot;\\My Macros\\&amp;quot;,&lt;br /&gt;
    menu = eval(&#039;(&#039; + fso.OpenTextFile(libdir + &amp;quot;menu.json&amp;quot;).ReadAll() + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
execMenu(menu);&lt;br /&gt;
&lt;br /&gt;
function execMenu(menu) {&lt;br /&gt;
  var n, i = 1, a = [null], m = CreatePopupMenu(), f;&lt;br /&gt;
  for (n in menu) {&lt;br /&gt;
    a.push(n);&lt;br /&gt;
    f = undefined;&lt;br /&gt;
    if (n.match(/^---/)) f = meMenuSeparator;&lt;br /&gt;
    else if (!menu[n]) f = meMenuGrayed;&lt;br /&gt;
    else if (menu[n].constructor == Number) f = menu[n];&lt;br /&gt;
    else if (menu[n].constructor == Object) n += &#039;\t≫&#039;;&lt;br /&gt;
    m.Add(n, i++, f);&lt;br /&gt;
  }&lt;br /&gt;
  if (i = m.Track(mePosMouse)) execItem(menu[a[i]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execItem(item) {&lt;br /&gt;
  switch (item.constructor) {&lt;br /&gt;
  case Function: item(); break;&lt;br /&gt;
  case String: execMacro(item); break;&lt;br /&gt;
  case Object: execMenu(item); break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execMacro(fn) {&lt;br /&gt;
  eval(fso.OpenTextFile(libdir + fn).ReadAll().replace(/^#.*/, &amp;quot;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menu.json ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 関数を定義する場合は，事前に関数定義をコンマで区切って並べておきます．&lt;br /&gt;
// (全体を式として評価するため，実際は式をコンマ演算子で並べていることに&lt;br /&gt;
//  なります)&lt;br /&gt;
function message2() { alert(&amp;quot;Good Luck!&amp;quot;); },&lt;br /&gt;
flag = false,&lt;br /&gt;
// メニュー項目を Object で表記します．&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;Hello&amp;quot;:	function () { alert(&amp;quot;Hello!&amp;quot;); },	// 値が関数オブジェクトなら，それを実行します．&lt;br /&gt;
	&amp;quot;---&amp;quot;:		null,				// --- で始まるプロパティはセパレータになります．&lt;br /&gt;
	&amp;quot;重複行の削除&amp;quot;:	&amp;quot;連続する重複行を削除.js&amp;quot;,	// 値が文字列なら，マクロを呼び出します．&lt;br /&gt;
	&amp;quot;Good Luck&amp;quot;:	flag &amp;amp;&amp;amp; message2,		// 値が false なら，無効に(灰色に)なります．&lt;br /&gt;
	&amp;quot;----&amp;quot;:		null,				// 複数のセパレータを用いる場合はプロパティをを変えてください．&lt;br /&gt;
	&amp;quot;Sub&amp;quot;: {					// 値が Object なら，サブメニューになります．&lt;br /&gt;
		&amp;quot;Good Luck&amp;quot;:	flag || message2,&lt;br /&gt;
		&amp;quot;Good Bye&amp;quot;:	meMenuGrayed		// これでも無効に(灰色に)なります．&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=1108</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=1108"/>
		<updated>2013-08-19T10:03:44Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「My Macros」等に保存し、マクロメニューの「選択」や「カスタマイズ」から読み込んで使用してください。マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[可変長を固定長に変換]] (kuro)&lt;br /&gt;
*[[CSV のカーソル位置の列を削除]] (kuro)&lt;br /&gt;
*[[パスを取得]] (kuro)&lt;br /&gt;
*[[テキストブラウザ]] (kuro)&lt;br /&gt;
*[[文書から検索]] (kuro)&lt;br /&gt;
*[[単語を抽出]] (kuro)&lt;br /&gt;
*[[フォルダ内のファイルをすべて開く]] (kuro)&lt;br /&gt;
*[[SHA でハッシュ化]] (kuro)&lt;br /&gt;
*[[Zen Coding]] (kuro)&lt;br /&gt;
*[[ファイルを比較]] (kuro)&lt;br /&gt;
*[[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
*[[タグファイルから補完]] (n)&lt;br /&gt;
*[[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[Vz 風テキストスタック 2 ストロークキー]] (goat) update 2012/10/01&lt;br /&gt;
*[[ブックマーク一覧ジャンプ]] (goat) update 2012/09/24 &lt;br /&gt;
*[[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
*[[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
*[[対応する括弧に移動]] (kuro, kurama)&lt;br /&gt;
*[[選択文字列を強調]] (kuro)&lt;br /&gt;
*[[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
*[[行頭に移動]] (kuro)&lt;br /&gt;
*[[引用の追加]] (kuro)&lt;br /&gt;
*[[標準変換]] (kuro)&lt;br /&gt;
*[[Yahoo!天気情報]] (kuro)&lt;br /&gt;
*[[ファイル名を引数にしてアプリ起動]] (kuro, miso)&lt;br /&gt;
*[[このファイルから検索(マッチしない行)]] (kuro)&lt;br /&gt;
*[[このファイルから検索(マッチする行)]] (kuro)&lt;br /&gt;
*[[バイト数]] (kuro)&lt;br /&gt;
*[[昇順で並び替え]] (kuro)&lt;br /&gt;
*[[降順で並び替え]] (kuro)&lt;br /&gt;
*[[連続する重複行を削除]] (kuro)&lt;br /&gt;
*[[日付と時刻を挿入]] (n)&lt;br /&gt;
*[[JavaScript を実行]] (n)&lt;br /&gt;
*[[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
*[[フォルダを開く]] (n)&lt;br /&gt;
*[[コマンドプロンプトを開く]] (n)&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
*[[オフインデント]] (inuuik)&lt;br /&gt;
*[[SDIウィンドウの記憶と復帰]](papagoat) Update 2012/10/23&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
*[[終了時状態保持・復元]] (ks)&lt;br /&gt;
*[[よく使うフォルダ]] (手石) Update 2013/02/23&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[連番の挿入]] (手石)&lt;br /&gt;
*[[コードスニペットもどき]] (手石) Update 2012/12/20&lt;br /&gt;
*[[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
*[[ラクラク罫線]] (手石) Update 2012/12/22&lt;br /&gt;
*[[自動バックアップ]] (ks)&lt;br /&gt;
*[[ファイル:XHTML.zip]](HTMLタグを、ショートカット・キーに登録して入力するマクロ「文章挟み込み仕様」アラフォー親父）&lt;br /&gt;
*[[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
*[[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
*[[アップデート]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
*[[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
*[[TSV(CSV) ⇒ 固定長]] (手石)　update 2013/04/16&lt;br /&gt;
*[[矩形ペースト]] (手石)&lt;br /&gt;
*[[インデントを考慮した折り返し（改行挿入）]] (手石)　update 2013/02/23&lt;br /&gt;
*[[自動箇条書き]] (手石)　update 2013/03/15&lt;br /&gt;
*[[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
*[[フォルダ選択ダイアログ]]（手石）&lt;br /&gt;
*[[キーアサイン集]]（ks）&lt;br /&gt;
*[[選択範囲を上下に移動]]（ks）&lt;br /&gt;
*[[コメントマーク付け外し]]（手石）　update 2013/03/28&lt;br /&gt;
*[https://github.com/haijinboys/mery-macro-emmet Emmet] (kuro)&lt;br /&gt;
*[[マクロ・関数をメニューで呼び出す]] (aliquis, 2013/08/19)&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%B5%E3%83%96%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=1107</id>
		<title>サブページ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%B5%E3%83%96%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=1107"/>
		<updated>2013-08-19T09:58:30Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: ページの作成：「サブページを作るには，まずリンクを張るのか！」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;サブページを作るには，まずリンクを張るのか！&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%B5%E3%83%B3%E3%83%89%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9&amp;diff=1106</id>
		<title>サンドボックス</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%B5%E3%83%B3%E3%83%89%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9&amp;diff=1106"/>
		<updated>2013-08-19T09:57:54Z</updated>

		<summary type="html">&lt;p&gt;202.215.166.72: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ここは MeryWiki で編集・執筆をするための練習や実験などに使用できるページです。初心者の方はまずこちらで Wiki の編集をしてみてください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ここから下に書き込んでください ==&lt;br /&gt;
[[サブページ]]&lt;br /&gt;
&lt;br /&gt;
すばらです！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
私、気になりまスーン！&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;nowiki&amp;gt;===&amp;lt;/nowiki&amp;gt;の見出し。 ===&lt;br /&gt;
&lt;br /&gt;
http://www.mediawiki.org/wiki/Help:Formatting/ja を見た。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt;の表示が違ってた。&lt;br /&gt;
&lt;br /&gt;
ソースの表示は&amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;と&amp;lt;script&amp;gt;&amp;lt;/nowiki&amp;gt;があるのかな？&lt;br /&gt;
行頭半角空けでもいいみたい。&lt;br /&gt;
&lt;br /&gt;
=== とど ===&lt;br /&gt;
*SJIS、UTF8 とかごとの文字コード表示&lt;br /&gt;
*特殊文字入力のインターフェイス考察&lt;br /&gt;
*CSV / TSV 編集機能の研究&lt;br /&gt;
*書き換え禁止モードをわかりやすくする？&lt;br /&gt;
*「モジュール &#039;Mery.exe&#039; のアドレス 00521D49 でアドレス 0000000E に対する読み取り違反がおきました。」の原因究明&lt;br /&gt;
sann&lt;/div&gt;</summary>
		<author><name>202.215.166.72</name></author>
	</entry>
</feed>