<?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=219.101.174.58</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=219.101.174.58"/>
	<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/219.101.174.58"/>
	<updated>2026-04-16T01:56:55Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9349</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9349"/>
		<updated>2025-12-11T04:17:07Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ソースコード */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
[https://apps.microsoft.com/detail/xp89dcgq3k6vld?hl=ja-JP&amp;amp;gl=JP Microsoft PowerToys]の Light Switch や、[https://apps.microsoft.com/detail/xp8jk4hzbvf435?hl=ja-JP&amp;amp;gl=JP Auto Dark Mode]などを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
* マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
:イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		// Meryの現在のテーマ&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		// Windowsのテーマ状態&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			// 表示設定項目一覧取得&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newTheme);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if(! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp(&amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot;));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9348</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9348"/>
		<updated>2025-12-11T04:09:30Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* 概要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
[https://apps.microsoft.com/detail/xp89dcgq3k6vld?hl=ja-JP&amp;amp;gl=JP Microsoft PowerToys]の Light Switch や、[https://apps.microsoft.com/detail/xp8jk4hzbvf435?hl=ja-JP&amp;amp;gl=JP Auto Dark Mode]などを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
* マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
:イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		// Meryの現在のテーマ&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		// Windowsのテーマ状態&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			// 表示設定項目一覧取得&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newTheme);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9347</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9347"/>
		<updated>2025-12-11T04:03:14Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ソースコード */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
[https://apps.microsoft.com/detail/xp89dcgq3k6vld?hl=ja-JP&amp;amp;gl=JP Microsoft PowerToys]の Light Switch や、[https://apps.microsoft.com/detail/xp8jk4hzbvf435?hl=ja-JP&amp;amp;gl=JP Auto Dark Mode]などを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		// Meryの現在のテーマ&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		// Windowsのテーマ状態&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			// 表示設定項目一覧取得&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newTheme);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9346</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9346"/>
		<updated>2025-12-10T03:56:01Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* 概要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
[https://apps.microsoft.com/detail/xp89dcgq3k6vld?hl=ja-JP&amp;amp;gl=JP Microsoft PowerToys]の Light Switch や、[https://apps.microsoft.com/detail/xp8jk4hzbvf435?hl=ja-JP&amp;amp;gl=JP Auto Dark Mode]などを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		// Meryの現在のテーマ&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		// Windowsのテーマ状態&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			// 表示設定項目一覧取得&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newTheme);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9345</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9345"/>
		<updated>2025-12-10T03:27:20Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ソースコード */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PowerToysのLight Switchや、Auto Dark Modeなどを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		// Meryの現在のテーマ&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		// Windowsのテーマ状態&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			// 表示設定項目一覧取得&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newTheme);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9344</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9344"/>
		<updated>2025-12-10T03:25:13Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ソースコード */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PowerToysのLight Switchや、Auto Dark Modeなどを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		// Meryの現在のテーマ&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		// Windowsのテーマ状態&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			// 表示設定項目一覧取得&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newTheme);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9343</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9343"/>
		<updated>2025-12-10T01:53:39Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ソースコード */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PowerToysのLight Switchや、Auto Dark Modeなどを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		// Meryの現在のテーマ&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		// Windowsのテーマ状態&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			// 表示設定項目一覧取得&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newTheme);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0 &amp;amp;&amp;amp; editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, &amp;quot;GeneralForeColor&amp;quot;, &amp;quot;&amp;quot;) !== &amp;quot;&amp;quot;){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</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=9342</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=9342"/>
		<updated>2025-12-10T01:50:34Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* おもしろ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery 用のマクロ ライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子 &amp;quot;js&amp;quot;（JavaScript、JScript の場合）にして Macros フォルダーなどに保存し、[マクロ] メニューの [選択] や [カスタマイズ] から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
このマクロ ライブラリはどなたでも自由に編集可能ですので、ご自身が開発した便利なマクロをどんどん共有してください。&lt;br /&gt;
&lt;br /&gt;
また、[[隠しオプション一覧]]に希望するオプションがあるかもしれませんので、そちらも参照してみてください。&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
* [https://github.com/haijinboys/mery-macro-emmet/blob/master/emmet.js Emmet] (Kuro)&lt;br /&gt;
* [[Zen Coding]] (Kuro)&lt;br /&gt;
* [[バイト数]] (Kuro, ks)&lt;br /&gt;
* [[日付と時刻を挿入]] (n, masme, isari)&lt;br /&gt;
* [[日付と時刻を挿入（カレンダー版）]] (papagoat)&lt;br /&gt;
* [[選択範囲を上下に移動]] (ks)&lt;br /&gt;
* [[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
* [[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
* [[Vz 風テキストスタック 2 ストロークキー]] (papagoat)&lt;br /&gt;
* [[ラクラク罫線]] (手石)&lt;br /&gt;
* [[矩形ペースト]] (手石)&lt;br /&gt;
* [[自動箇条書き]] (手石)&lt;br /&gt;
* [[特殊改行]] (FuG)&lt;br /&gt;
* [[部分編集]] (ks)&lt;br /&gt;
* [[文字カウント]] (masme)&lt;br /&gt;
* [[字下げ・字上げ]] (masme)&lt;br /&gt;
* [[数値を増減]] (masme)&lt;br /&gt;
* [[上に行挿入]] (yuko)&lt;br /&gt;
* [[選択範囲を広げる]] (yuko)&lt;br /&gt;
* [[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko)&lt;br /&gt;
* [[選択した文字列を文書からすべて削除]] (Noah)&lt;br /&gt;
* [[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
* [[CSV のカーソル位置の列を削除]] (MSY-07)&lt;br /&gt;
* [[XHTML入力補助]] (アラフォー親父)&lt;br /&gt;
* [[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist, yuko)&lt;br /&gt;
* [[Markdown 向け、リスト記号 (*) のトグル]] (yuko)&lt;br /&gt;
* [[Markdown 向け、タスクリスト (* ［］) のチェック状態をトグル]] (yuko)&lt;br /&gt;
* [[Markdown入力補助]] (急急如律令)&lt;br /&gt;
* [[青空文庫用整形補助]] (ks, 急急如律令)&lt;br /&gt;
* [[自動ルビ振り]] (急急如律令)&lt;br /&gt;
* [[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
* [[何年生で習う漢字？]] (シリル)&lt;br /&gt;
* [[操作の繰り返し]] (Kuro)&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
* [[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
* [[ファイルを比較]] (Kuro, MSY-07)&lt;br /&gt;
* [[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
* [[文字列中のパス起動]] (ks)&lt;br /&gt;
* [[パス・URLを開く コマンドを実行する]] (yuko)&lt;br /&gt;
* [[開いている文書のファイル名を変更する]] (yuko)&lt;br /&gt;
* [[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
* [[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
* [[フォルダを開く]] (n)&lt;br /&gt;
* [[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
* [[コマンドプロンプトを開く]] (n)&lt;br /&gt;
* [[ブックマーク一覧ジャンプ]] (goat)&lt;br /&gt;
* [[よく使うフォルダ]] (手石)&lt;br /&gt;
* [[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
* [[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
* [[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
* [[タグジャンプ]] (o)&lt;br /&gt;
* [[ウィンドウの位置とサイズを拡張子で指定]] (papagoat)&lt;br /&gt;
* [[編集モードの自動選択]] (Bleat)&lt;br /&gt;
* [[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
* [[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
* [[標準変換]] (Kuro, MSY-07)&lt;br /&gt;
* [[テキスト変換]] (ks)&lt;br /&gt;
* [[テキスト整形]] (masme)&lt;br /&gt;
* [[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
* [[Unicode正規化]] (ucky)&lt;br /&gt;
* [[Wikipediaマークアップ修正]] (MSY-07)&lt;br /&gt;
* [[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
* [[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
* [[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
* [[clustal-omegaを用いてアライメントを実行]] (suke)&lt;br /&gt;
* [[連番の挿入]] (手石)&lt;br /&gt;
* [[連番を挿入]] (masme)&lt;br /&gt;
* [[マルチカーソルに連番を入力]] (yuko)&lt;br /&gt;
* [[行並べ替え]] (masme)&lt;br /&gt;
* [[自然数ソート]] (tak)&lt;br /&gt;
* [[可変長を固定長に変換]] (MSY-07)&lt;br /&gt;
* [[TSV(CSV) ⇒ 固定長]] (手石)&lt;br /&gt;
* [[GFMをHTMLに変換]] (noonworks)&lt;br /&gt;
* [[基数変換10 16]] (シリル)&lt;br /&gt;
* [[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
* [[文書から検索]] (Kuro)&lt;br /&gt;
* [[単語を抽出]] (Kuro)&lt;br /&gt;
* [[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
* [[ポップアップメニューで検索先にジャンプ]] (手石)&lt;br /&gt;
* [[検索(SJIS以外)]] (masme)&lt;br /&gt;
* [https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)&lt;br /&gt;
* [https://github.com/GunseiKPaseri/Mery_macro/blob/master/count.js 文字出現量ランキング] (群生系パセリ)&lt;br /&gt;
* [[検索ヒット数表示]] (ks)&lt;br /&gt;
* [[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
* [[任意の検索エンジンで検索ー改良版]] (Takeshi)&lt;br /&gt;
* [[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
* [[複数置換]] (Noah)&lt;br /&gt;
* [[類義語アウトプット【Python】]] (シリル)&lt;br /&gt;
* [[校正支援アウトプット]] (シリル)&lt;br /&gt;
* [[見出しジャンプ]] (yuko)&lt;br /&gt;
* [[CSV/TSVでアクティブ列選択]] (yuko)&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
* [[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
* [[Eclipse風コメントアウト(改)]] (pizz)&lt;br /&gt;
* [[コメントマーク付け外し]] (手石, masme)&lt;br /&gt;
* [[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
* [[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
* [[タグファイルから補完]] (n)&lt;br /&gt;
* [[コードスニペットもどき]] (手石)&lt;br /&gt;
* [[TeX文書のコンパイル]] (手石, isari)&lt;br /&gt;
* [[簡易数式計算]] (ks)&lt;br /&gt;
* [[定義へ移動]] (ks)&lt;br /&gt;
* [[タブの桁数]] (手石)&lt;br /&gt;
* [[行末の空白を削除]] (n)&lt;br /&gt;
* [https://github.com/TakamiChie/mery-scripts/blob/master/FileExecutor.js 開いているスクリプトファイルを実行] (高見知英)&lt;br /&gt;
* [https://github.com/TakamiChie/mery-scripts/blob/master/SyntaxChecker.js 開いているスクリプトファイルを構文チェック] (高見知英)&lt;br /&gt;
* [[説明を出力]] (s)&lt;br /&gt;
* [[JSON整形]] (Ovis)&lt;br /&gt;
* [[コンソール実行]] (YOS G-spec)&lt;br /&gt;
* [[拡張子からコンソール実行]] (YOS G-spec)&lt;br /&gt;
* [[ScriptRun]] (fuka)&lt;br /&gt;
* [[JavaScript を実行]] (n)&lt;br /&gt;
* [[Ruby を実行]] (n)&lt;br /&gt;
* [[HSPキーワード検索]] (SSSE)&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
* [[メール送信]] (ks)&lt;br /&gt;
* [[あつまれ☆みんなのおもしろアイコン]] (シリル, ucky)&lt;br /&gt;
* [[テーマのトグル]] (ucky)&lt;br /&gt;
* [[テーマの自動変更]] (pizz)&lt;br /&gt;
* [[お気に入りフォント]] (ucky)&lt;br /&gt;
* [[Google Gemini に相談]] (yuko)&lt;br /&gt;
* [[OpenAI GPT に相談]] (yuko)&lt;br /&gt;
* [[Groq に相談]] (yuko)&lt;br /&gt;
* [[Google Gemini で執筆支援]] (Kuro)&lt;br /&gt;
* [[MeryToys]] (Kuro)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
* [[最新版を確認]] (diaphragm)&lt;br /&gt;
* [[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
* [[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
* [[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
* [[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
* [[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
* [[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
* [[マクロ・関数をメニューで呼び出す]] (aliquis)&lt;br /&gt;
* [[階層化マクロメニュー]] (ks)&lt;br /&gt;
* [[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
* [[Editor.OpenFile()のポリフィル]] (kazy)&lt;br /&gt;
* [[折り返しトグル切り替え]] (Bleat)&lt;br /&gt;
* [[Beep音の例]] (star0worshipper)&lt;br /&gt;
* [[ブラウザ風タブ移動]] (yuko)&lt;br /&gt;
* [[タブ位置を先頭/末尾に移動]] (yuko)&lt;br /&gt;
* [[Mery 電卓]] (yuko)&lt;br /&gt;
* [[Mery 電卓 (bc コマンド使用版)]] (yuko)&lt;br /&gt;
&lt;br /&gt;
== 開発者向け ==&lt;br /&gt;
* [[キーアサイン集]] (ks, masme, isari)&lt;br /&gt;
* [[includeライブラリ]] (ks)&lt;br /&gt;
* [[マクロ覚え書き（開発者向け）]] (ks, papagoat)&lt;br /&gt;
&lt;br /&gt;
== 注意事項 ==&lt;br /&gt;
[https://www.haijin-boys.com/software/mery/mery-2-6-6#5 Mery Ver 2.6.6]以前に作成されたマクロが動作しない場合は下記のページを参照してください。&lt;br /&gt;
&lt;br /&gt;
* [https://www.haijin-boys.com/wiki/%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9:3:%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96##language マクロリファレンス:3:ディレクティブ]&lt;br /&gt;
* [https://www.haijin-boys.com/discussions/6929 公式のマクロ 箇条書きが最新メリーで動作するかチェックいただけませんか？]&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9341</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9341"/>
		<updated>2025-12-10T01:48:45Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ソースコード */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PowerToysのLight Switchや、Auto Dark Modeなどを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		// Meryの現在のテーマ&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		// Windowsのテーマ状態&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			// 表示設定項目一覧取得&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newTheme);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0 &amp;amp;&amp;amp; editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, &amp;quot;GeneralForeColor&amp;quot;, &amp;quot;&amp;quot;) !== &amp;quot;&amp;quot;){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Clear();&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Clear();&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9340</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9340"/>
		<updated>2025-12-10T01:44:16Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ソースコード */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PowerToysのLight Switchや、Auto Dark Modeなどを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#Custom-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#Custom-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			var iniKeys = enumKeysInSection(&amp;quot;Theme\\&amp;quot; + newThem);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0 &amp;amp;&amp;amp; editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newThem, &amp;quot;GeneralForeColor&amp;quot;, &amp;quot;&amp;quot;) !== &amp;quot;&amp;quot;){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Clear();&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Clear();&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9339</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9339"/>
		<updated>2025-12-10T01:39:35Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* 概要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせて、Meryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PowerToysのLight Switchや、Auto Dark Modeなどを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#MyTheme-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#MyTheme-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			var iniSection = &amp;quot;Theme\\&amp;quot; + newTheme;&lt;br /&gt;
			var iniKeys = enumKeysInSection(iniSection);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0 &amp;amp;&amp;amp; editor.ReadSettingString(iniSection, &amp;quot;GeneralForeColor&amp;quot;, &amp;quot;&amp;quot;) !== &amp;quot;&amp;quot;){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Clear();&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Clear();&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9338</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9338"/>
		<updated>2025-12-10T01:38:09Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* 概要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせてMeryのエディタ部のテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PowerToysのLight Switchや、Auto Dark Modeなどでは、Windowsのテーマを時間で自動変更するなどの機能がありますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#MyTheme-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#MyTheme-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			var iniSection = &amp;quot;Theme\\&amp;quot; + newTheme;&lt;br /&gt;
			var iniKeys = enumKeysInSection(iniSection);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0 &amp;amp;&amp;amp; editor.ReadSettingString(iniSection, &amp;quot;GeneralForeColor&amp;quot;, &amp;quot;&amp;quot;) !== &amp;quot;&amp;quot;){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Clear();&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Clear();&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9337</id>
		<title>テーマの自動変更</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E8%87%AA%E5%8B%95%E5%A4%89%E6%9B%B4&amp;diff=9337"/>
		<updated>2025-12-10T01:37:22Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: ページの作成:「== 概要 == Windowsのテーマ設定に合わせてMeryのテーマを自動変更します。  Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。  PowerToysのLight Switchや、Auto Dark Modeなどでは、Windowsのテーマを時…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
Windowsのテーマ設定に合わせてMeryのテーマを自動変更します。&lt;br /&gt;
&lt;br /&gt;
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
PowerToysのLight Switchや、Auto Dark Modeなどでは、Windowsのテーマを時間で自動変更するなどの機能がありますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。&lt;br /&gt;
&lt;br /&gt;
* Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。&lt;br /&gt;
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します&lt;br /&gt;
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
&lt;br /&gt;
テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。&lt;br /&gt;
&lt;br /&gt;
== 変更履歴 ==&lt;br /&gt;
* 2025-12-10&lt;br /&gt;
** 新規作成&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; copy&amp;gt;&lt;br /&gt;
#title = &amp;quot;テーマの自動変更&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します&lt;br /&gt;
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)&lt;br /&gt;
var lightModeTheme = &amp;quot;#MyTheme-Light&amp;quot;&lt;br /&gt;
var darkModeTheme = &amp;quot;#MyTheme-Dark&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします&lt;br /&gt;
//    イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)&lt;br /&gt;
// Meryのオプション-&amp;gt;「基本」-&amp;gt;「アプリのテーマ」で、&lt;br /&gt;
//    「システム設定を使用する」としている場合のみ動作するようにしてあります&lt;br /&gt;
&lt;br /&gt;
if (&amp;quot;ReadSettings&amp;quot; in editor) {&lt;br /&gt;
	if(editor.ReadSettingInteger(&amp;quot;General&amp;quot;, &amp;quot;DarkMode&amp;quot;, -1) == 2){&lt;br /&gt;
		var currentTheme = editor.ReadSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		var regKey = &amp;quot;HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\AppsUseLightTheme&amp;quot;;&lt;br /&gt;
		var isLight = (new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;)).RegRead(regKey);&lt;br /&gt;
		var newTheme;&lt;br /&gt;
		if(isLight == 0){&lt;br /&gt;
			newTheme = darkModeTheme;&lt;br /&gt;
		}else{&lt;br /&gt;
			newTheme = lightModeTheme;&lt;br /&gt;
		}&lt;br /&gt;
		if(currentTheme != newTheme){&lt;br /&gt;
			var iniSection = &amp;quot;Theme\\&amp;quot; + newTheme;&lt;br /&gt;
			var iniKeys = enumKeysInSection(iniSection);&lt;br /&gt;
			if(iniKeys.length &amp;gt; 0 &amp;amp;&amp;amp; editor.ReadSettingString(iniSection, &amp;quot;GeneralForeColor&amp;quot;, &amp;quot;&amp;quot;) !== &amp;quot;&amp;quot;){&lt;br /&gt;
				editor.WriteSettings();&lt;br /&gt;
&lt;br /&gt;
				editor.WriteSettingString(&amp;quot;Themes&amp;quot;, &amp;quot;ThemeName&amp;quot;, newTheme);&lt;br /&gt;
&lt;br /&gt;
				// テーマを「名前を付けて保存」したときに設定ファイルに追加される&lt;br /&gt;
				// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える&lt;br /&gt;
				for(var i = 0; i &amp;lt; iniKeys.length; i++){&lt;br /&gt;
					editor.WriteSettingString(&amp;quot;Display&amp;quot;, iniKeys[i],&lt;br /&gt;
						editor.ReadSettingString(&amp;quot;Theme\\&amp;quot; + newTheme, iniKeys[i], &amp;quot;&amp;quot;)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				editor.ReadSettings();&lt;br /&gt;
			}else{&lt;br /&gt;
				window.OutputBar.Clear();&lt;br /&gt;
				window.OutputBar.Visible = true;&lt;br /&gt;
				window.OutputBar.Writeln(&amp;quot;指定されたテーマが見つかりません: &amp;quot; + newTheme);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}else{&lt;br /&gt;
	window.OutputBar.Clear();&lt;br /&gt;
	window.OutputBar.Visible = true;&lt;br /&gt;
	window.OutputBar.Writeln(&amp;quot;動作対象外のMeryです: Ver.&amp;quot; + editor.Version);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Mery.iniから指定セクションのキー名一覧を取得する&lt;br /&gt;
function enumKeysInSection(sectionName){&lt;br /&gt;
	var keys = [];&lt;br /&gt;
&lt;br /&gt;
	// Mery.ini を探す&lt;br /&gt;
	var iniPath = editor.FullName.replace(/\.exe$/i, &amp;quot;.ini&amp;quot;);&lt;br /&gt;
	if (! (new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)).FileExists(iniPath)){&lt;br /&gt;
		var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];&lt;br /&gt;
		iniPath = (new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )).SpecialFolders(&amp;quot;APPDATA&amp;quot;) + &amp;quot;\\Mery\\&amp;quot; + iniName + &amp;quot;.ini&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	// Mery.ini を読みこむ&lt;br /&gt;
	var adodb = new ActiveXObject(&amp;quot;adodb.Stream&amp;quot;);&lt;br /&gt;
	var adTypeText = 2, adReadAll = -1;&lt;br /&gt;
	adodb.Type = adTypeText, adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
	adodb.Open();&lt;br /&gt;
	adodb.LoadFromFile(iniPath);&lt;br /&gt;
	var iniText = adodb.ReadText(adReadAll);&lt;br /&gt;
	adodb.Close();&lt;br /&gt;
&lt;br /&gt;
	var start = iniText.search(new RegExp( &amp;quot;^\\[&amp;quot; + sectionName.replace(/\W/g, &amp;quot;\\$&amp;amp;&amp;quot;) + &amp;quot;\\]$&amp;quot;, &amp;quot;m&amp;quot; ));&lt;br /&gt;
	if(start &amp;gt;= 0){&lt;br /&gt;
		start = start + sectionName.length + 4;&lt;br /&gt;
		var end = iniText.indexOf(&amp;quot;\r\n[&amp;quot;, start);&lt;br /&gt;
		if(end &amp;lt; 0) end = iniText.length;&lt;br /&gt;
&lt;br /&gt;
		var rows = iniText.slice(start, end).split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
		for(var i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
			var keyEnd = rows[i].indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
			if(keyEnd &amp;gt; 0){&lt;br /&gt;
				keys.push(rows[i].slice(0, keyEnd));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return keys;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=GetKeyState.exe(%E3%82%AD%E3%83%BC%E7%8A%B6%E6%85%8B%E5%8F%96%E5%BE%97%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)&amp;diff=7507</id>
		<title>GetKeyState.exe(キー状態取得実行ファイル)</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=GetKeyState.exe(%E3%82%AD%E3%83%BC%E7%8A%B6%E6%85%8B%E5%8F%96%E5%BE%97%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)&amp;diff=7507"/>
		<updated>2024-07-02T07:09:14Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* 概要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
----------&lt;br /&gt;
Mery Ver 3.7.2 から、shell.GetKeyStateメソッドが使えるようになりました。&lt;br /&gt;
プロセス起動のタイムラグなど、パフォーマンス面でも有利ですし、柔軟性も高いので、該当バージョンが利用できるなら、上記メソッドの利用も検討してください。&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
修飾キーの押下状態を取得する実行ファイルです。&lt;br /&gt;
&lt;br /&gt;
Shift、Ctrl、Alt いずれかのキーの押下状態を取得できます。マクロスクリプトからキー状態を取得し、状態に応じて動作をコントロールしたくて作成しました。&lt;br /&gt;
&lt;br /&gt;
作成されたマクロから利用できますので、ご自由にお使いください。&lt;br /&gt;
&lt;br /&gt;
zipファイルをダウンロードしたら、ファイルのプロパティ画面で「ブロックの解除」を行ってください（これをしないと実行時に警告が表示されることがあります）。&lt;br /&gt;
&lt;br /&gt;
その後、zipファイルを展開して、マクロから実行されるフォルダーに配置してください（推奨は &#039;&#039;&#039;&amp;quot;Macros&amp;quot;フォルダー&#039;&#039;&#039;とします）。&lt;br /&gt;
&lt;br /&gt;
== ダウンロード ==&lt;br /&gt;
[[ファイル:GetKeyState.zip]]&lt;br /&gt;
&lt;br /&gt;
== 更新履歴 ==&lt;br /&gt;
2019/3/4 新規作成&lt;br /&gt;
&lt;br /&gt;
2019/3/23 公開ページの変更（中身に変更はありません）&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
コマンドライン引数で、&amp;quot;Shift&amp;quot; &amp;quot;Ctrl&amp;quot; &amp;quot;Alt&amp;quot; のいずれかを渡してください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GetKeyState.exe shift		// Shiftキーの押下状態を取得する場合&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 大文字小文字は区別しません&lt;br /&gt;
* 実は先頭の1文字しか判断していませんので、&amp;quot;s&amp;quot;のみとかでも大丈夫です&lt;br /&gt;
&lt;br /&gt;
戻り値（終了コード）&lt;br /&gt;
* 1: キーが押されている&lt;br /&gt;
* 0: キーは押されていない&lt;br /&gt;
* -1: エラー（引数間違い、メッセージボックスを表示します）&lt;br /&gt;
&lt;br /&gt;
マクロにショートカットキーを割り当てる際は、該当する修飾キー &amp;quot;あり&amp;quot; と &amp;quot;なし&amp;quot; の両方を割り当ててください&lt;br /&gt;
* Shift+F8 / F8 など&lt;br /&gt;
&lt;br /&gt;
ツールバーにアイコン化しているマクロの場合は、&amp;quot;修飾キー＋クリック&amp;quot; か &amp;quot;ふつうの左クリック&amp;quot; かでマクロの動作を切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
ツールバーの [マクロ] メニューや右クリックメニューから実行する際は、Shift または Ctrl キーを押しながら実行することができますが、Alt キーを押しながら実行することはできません（Alt キーでメニューのポップアップ表示がキャンセルされるため）。&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;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window.Alert( &amp;quot;XXキーが押されています&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
の部分を任意の動作コードに置きかえてください。マクロの動作内容に変化をつけたり、複数のマクロの実行コードを振り分けてひとつのマクロにまとめたりすることができます。&lt;br /&gt;
&lt;br /&gt;
;サンプルコード1&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var wshShell = new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// カレントディレクトリをマクロディレクトリに変更&lt;br /&gt;
wshShell.CurrentDirectory = editor.FullName.match(/^.*\\/)[0] + &#039;Macros&#039;;&lt;br /&gt;
&lt;br /&gt;
// SHIFTキー状態を取得&lt;br /&gt;
var shift = wshShell.Run(&amp;quot;GetKeyState.exe shift&amp;quot;, 0, true);&lt;br /&gt;
&lt;br /&gt;
if(shift != -1){&lt;br /&gt;
  if(shift == 1) window.Alert(&amp;quot;Shiftキーが押されています&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;サンプルコード2&lt;br /&gt;
* 実行ファイル GetKeyState.exe の実在確認をします（GetKeyState がない場合でも動作する）&lt;br /&gt;
* カレントディレクトリ（Mery.exe の作業フォルダ）を変更しません&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var ctrl = 0, alt = 0;&lt;br /&gt;
&lt;br /&gt;
// GetKeyState.exe のフルパスを &amp;quot; &amp;quot; で囲う&lt;br /&gt;
var gks = &#039;&amp;quot;&#039; + editor.FullName.replace( /[^\\]+$/ , &#039;&#039; )&lt;br /&gt;
        + &#039;Macros\\GetKeyState.exe&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
// 半角空白＋コマンドライン引数をつけて GetKeyState を実行する（実行ファイルの実在確認をする）&lt;br /&gt;
if ( new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; ).FileExists( gks ) ) {&lt;br /&gt;
  var wshShell = new ActiveXObject(&#039;WScript.Shell&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Ctrl キーの状態を取得&lt;br /&gt;
  ctrl = wshShell.Run( gks + &#039; control&#039;, 0, true );&lt;br /&gt;
  // Alt キーの状態を取得&lt;br /&gt;
  alt = WshShell.Run( gks + &#039; alt&#039; , 0, true );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 修飾キーによる動作の切り替え&lt;br /&gt;
if ( ctrl &amp;gt; 0 &amp;amp;&amp;amp; alt &amp;gt; 0 ) {&lt;br /&gt;
  window.Alert( &amp;quot;CtrlキーとAltキーが押されています&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
else if ( ctrl &amp;gt; 0 ) {&lt;br /&gt;
  window.Alert( &amp;quot;Ctrlキーが押されています&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
else if ( Alt &amp;gt; 0 ) {&lt;br /&gt;
  window.Alert( &amp;quot;Altキーが押されています&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  window.Alert( &amp;quot;修飾キーは押されていません&amp;quot; ); // ← GetKeyState.exe がない場合も&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;サンプルコード3&lt;br /&gt;
ポップアップメニューマクロへの導入サンプル&lt;br /&gt;
*メニューに表示する内容や、選択した項目から実行するコマンドを切り替えます&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var gks = editor.FullName.replace( /[^\\]+$/i , &amp;quot;&amp;quot; )&lt;br /&gt;
        + &amp;quot;Macros\\GetKeyState.exe&amp;quot;;&lt;br /&gt;
var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
// マクロ開始時の Ctrl キーの状態を取得&lt;br /&gt;
var $ctrl1 = WshShell.Run( &amp;quot;\&amp;quot;&amp;quot; + gks + &amp;quot;\&amp;quot; ctrl&amp;quot;, 0, true );&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
menu.Add( &amp;quot;ほげ&amp;quot;, 1 );&lt;br /&gt;
&lt;br /&gt;
// Ctrl キーを押しながら実行したときは、項目を追加表示する&lt;br /&gt;
if ( $ctrl1 == 1 ) {&lt;br /&gt;
  menu.Add( &amp;quot;ほげほげ&amp;quot;, 2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ポップアップメニューを表示&lt;br /&gt;
var r = menu.Track( mePosMouse );&lt;br /&gt;
&lt;br /&gt;
// Ctrl キーを押しながら項目を選択したときは、動作をを変更する&lt;br /&gt;
var $ctrl2 = WshShell.Run( &amp;quot;\&amp;quot;&amp;quot; + gks + &amp;quot;\&amp;quot; ctrl&amp;quot;, 0, true );&lt;br /&gt;
&lt;br /&gt;
switch( r ) {&lt;br /&gt;
  case 1:&lt;br /&gt;
  if      ( $ctrl2 === 0 )  window.Alert( &amp;quot;ほげ&amp;quot; );&lt;br /&gt;
  else if ( $ctrl2 === 1 )  window.Alert( &amp;quot;ふが&amp;quot; );&lt;br /&gt;
  break;&lt;br /&gt;
&lt;br /&gt;
  case 2:&lt;br /&gt;
  if      ( $ctrl2 === 0 )  window.Alert( &amp;quot;ほげほげ&amp;quot; );&lt;br /&gt;
  else if ( $ctrl2 === 1 )  window.Alert( &amp;quot;ふがふが&amp;quot; );&lt;br /&gt;
  break;&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
  break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
ソースも置いときます(VS2005 C++)（こちらは通常ダウンロードの必要はありません）&lt;br /&gt;
&lt;br /&gt;
[[ファイル:GetKeyStateSrc.zip]]&lt;br /&gt;
&lt;br /&gt;
※ 著作権は放棄します。悪意のない公序良俗の範囲内でしたら、ソースを含めご自由にお使いください（そのかわり、一切の責任も放棄します...まぁ、こんなもので誤動作もあったもんじゃないですが、派生版まで責任が持てないので）。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* ページ内の説明文、サンプルコードに加筆させていただきました (2019/03/23 - 2019/12/02, sukemaru)&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=GetKeyState.exe(%E3%82%AD%E3%83%BC%E7%8A%B6%E6%85%8B%E5%8F%96%E5%BE%97%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)&amp;diff=7506</id>
		<title>GetKeyState.exe(キー状態取得実行ファイル)</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=GetKeyState.exe(%E3%82%AD%E3%83%BC%E7%8A%B6%E6%85%8B%E5%8F%96%E5%BE%97%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)&amp;diff=7506"/>
		<updated>2024-07-02T07:08:25Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
----------&lt;br /&gt;
Mery Ver 3.7.2 から、shell.GetKeyStateメソッドが使えるようになりました。&lt;br /&gt;
プロセス起動のタイムラグなど、パフォーマンス面でも有利ですし、柔軟性も高いので、上記以降のバージョンが利用できるなら、上記メソッドの利用も検討してください。&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
修飾キーの押下状態を取得する実行ファイルです。&lt;br /&gt;
&lt;br /&gt;
Shift、Ctrl、Alt いずれかのキーの押下状態を取得できます。マクロスクリプトからキー状態を取得し、状態に応じて動作をコントロールしたくて作成しました。&lt;br /&gt;
&lt;br /&gt;
作成されたマクロから利用できますので、ご自由にお使いください。&lt;br /&gt;
&lt;br /&gt;
zipファイルをダウンロードしたら、ファイルのプロパティ画面で「ブロックの解除」を行ってください（これをしないと実行時に警告が表示されることがあります）。&lt;br /&gt;
&lt;br /&gt;
その後、zipファイルを展開して、マクロから実行されるフォルダーに配置してください（推奨は &#039;&#039;&#039;&amp;quot;Macros&amp;quot;フォルダー&#039;&#039;&#039;とします）。&lt;br /&gt;
&lt;br /&gt;
== ダウンロード ==&lt;br /&gt;
[[ファイル:GetKeyState.zip]]&lt;br /&gt;
&lt;br /&gt;
== 更新履歴 ==&lt;br /&gt;
2019/3/4 新規作成&lt;br /&gt;
&lt;br /&gt;
2019/3/23 公開ページの変更（中身に変更はありません）&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
コマンドライン引数で、&amp;quot;Shift&amp;quot; &amp;quot;Ctrl&amp;quot; &amp;quot;Alt&amp;quot; のいずれかを渡してください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GetKeyState.exe shift		// Shiftキーの押下状態を取得する場合&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 大文字小文字は区別しません&lt;br /&gt;
* 実は先頭の1文字しか判断していませんので、&amp;quot;s&amp;quot;のみとかでも大丈夫です&lt;br /&gt;
&lt;br /&gt;
戻り値（終了コード）&lt;br /&gt;
* 1: キーが押されている&lt;br /&gt;
* 0: キーは押されていない&lt;br /&gt;
* -1: エラー（引数間違い、メッセージボックスを表示します）&lt;br /&gt;
&lt;br /&gt;
マクロにショートカットキーを割り当てる際は、該当する修飾キー &amp;quot;あり&amp;quot; と &amp;quot;なし&amp;quot; の両方を割り当ててください&lt;br /&gt;
* Shift+F8 / F8 など&lt;br /&gt;
&lt;br /&gt;
ツールバーにアイコン化しているマクロの場合は、&amp;quot;修飾キー＋クリック&amp;quot; か &amp;quot;ふつうの左クリック&amp;quot; かでマクロの動作を切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
ツールバーの [マクロ] メニューや右クリックメニューから実行する際は、Shift または Ctrl キーを押しながら実行することができますが、Alt キーを押しながら実行することはできません（Alt キーでメニューのポップアップ表示がキャンセルされるため）。&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;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window.Alert( &amp;quot;XXキーが押されています&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
の部分を任意の動作コードに置きかえてください。マクロの動作内容に変化をつけたり、複数のマクロの実行コードを振り分けてひとつのマクロにまとめたりすることができます。&lt;br /&gt;
&lt;br /&gt;
;サンプルコード1&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var wshShell = new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// カレントディレクトリをマクロディレクトリに変更&lt;br /&gt;
wshShell.CurrentDirectory = editor.FullName.match(/^.*\\/)[0] + &#039;Macros&#039;;&lt;br /&gt;
&lt;br /&gt;
// SHIFTキー状態を取得&lt;br /&gt;
var shift = wshShell.Run(&amp;quot;GetKeyState.exe shift&amp;quot;, 0, true);&lt;br /&gt;
&lt;br /&gt;
if(shift != -1){&lt;br /&gt;
  if(shift == 1) window.Alert(&amp;quot;Shiftキーが押されています&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;サンプルコード2&lt;br /&gt;
* 実行ファイル GetKeyState.exe の実在確認をします（GetKeyState がない場合でも動作する）&lt;br /&gt;
* カレントディレクトリ（Mery.exe の作業フォルダ）を変更しません&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var ctrl = 0, alt = 0;&lt;br /&gt;
&lt;br /&gt;
// GetKeyState.exe のフルパスを &amp;quot; &amp;quot; で囲う&lt;br /&gt;
var gks = &#039;&amp;quot;&#039; + editor.FullName.replace( /[^\\]+$/ , &#039;&#039; )&lt;br /&gt;
        + &#039;Macros\\GetKeyState.exe&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
// 半角空白＋コマンドライン引数をつけて GetKeyState を実行する（実行ファイルの実在確認をする）&lt;br /&gt;
if ( new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; ).FileExists( gks ) ) {&lt;br /&gt;
  var wshShell = new ActiveXObject(&#039;WScript.Shell&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Ctrl キーの状態を取得&lt;br /&gt;
  ctrl = wshShell.Run( gks + &#039; control&#039;, 0, true );&lt;br /&gt;
  // Alt キーの状態を取得&lt;br /&gt;
  alt = WshShell.Run( gks + &#039; alt&#039; , 0, true );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 修飾キーによる動作の切り替え&lt;br /&gt;
if ( ctrl &amp;gt; 0 &amp;amp;&amp;amp; alt &amp;gt; 0 ) {&lt;br /&gt;
  window.Alert( &amp;quot;CtrlキーとAltキーが押されています&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
else if ( ctrl &amp;gt; 0 ) {&lt;br /&gt;
  window.Alert( &amp;quot;Ctrlキーが押されています&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
else if ( Alt &amp;gt; 0 ) {&lt;br /&gt;
  window.Alert( &amp;quot;Altキーが押されています&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  window.Alert( &amp;quot;修飾キーは押されていません&amp;quot; ); // ← GetKeyState.exe がない場合も&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;サンプルコード3&lt;br /&gt;
ポップアップメニューマクロへの導入サンプル&lt;br /&gt;
*メニューに表示する内容や、選択した項目から実行するコマンドを切り替えます&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var gks = editor.FullName.replace( /[^\\]+$/i , &amp;quot;&amp;quot; )&lt;br /&gt;
        + &amp;quot;Macros\\GetKeyState.exe&amp;quot;;&lt;br /&gt;
var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
// マクロ開始時の Ctrl キーの状態を取得&lt;br /&gt;
var $ctrl1 = WshShell.Run( &amp;quot;\&amp;quot;&amp;quot; + gks + &amp;quot;\&amp;quot; ctrl&amp;quot;, 0, true );&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
menu.Add( &amp;quot;ほげ&amp;quot;, 1 );&lt;br /&gt;
&lt;br /&gt;
// Ctrl キーを押しながら実行したときは、項目を追加表示する&lt;br /&gt;
if ( $ctrl1 == 1 ) {&lt;br /&gt;
  menu.Add( &amp;quot;ほげほげ&amp;quot;, 2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ポップアップメニューを表示&lt;br /&gt;
var r = menu.Track( mePosMouse );&lt;br /&gt;
&lt;br /&gt;
// Ctrl キーを押しながら項目を選択したときは、動作をを変更する&lt;br /&gt;
var $ctrl2 = WshShell.Run( &amp;quot;\&amp;quot;&amp;quot; + gks + &amp;quot;\&amp;quot; ctrl&amp;quot;, 0, true );&lt;br /&gt;
&lt;br /&gt;
switch( r ) {&lt;br /&gt;
  case 1:&lt;br /&gt;
  if      ( $ctrl2 === 0 )  window.Alert( &amp;quot;ほげ&amp;quot; );&lt;br /&gt;
  else if ( $ctrl2 === 1 )  window.Alert( &amp;quot;ふが&amp;quot; );&lt;br /&gt;
  break;&lt;br /&gt;
&lt;br /&gt;
  case 2:&lt;br /&gt;
  if      ( $ctrl2 === 0 )  window.Alert( &amp;quot;ほげほげ&amp;quot; );&lt;br /&gt;
  else if ( $ctrl2 === 1 )  window.Alert( &amp;quot;ふがふが&amp;quot; );&lt;br /&gt;
  break;&lt;br /&gt;
&lt;br /&gt;
  default:&lt;br /&gt;
  break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
ソースも置いときます(VS2005 C++)（こちらは通常ダウンロードの必要はありません）&lt;br /&gt;
&lt;br /&gt;
[[ファイル:GetKeyStateSrc.zip]]&lt;br /&gt;
&lt;br /&gt;
※ 著作権は放棄します。悪意のない公序良俗の範囲内でしたら、ソースを含めご自由にお使いください（そのかわり、一切の責任も放棄します...まぁ、こんなもので誤動作もあったもんじゃないですが、派生版まで責任が持てないので）。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* ページ内の説明文、サンプルコードに加筆させていただきました (2019/03/23 - 2019/12/02, sukemaru)&lt;/div&gt;</summary>
		<author><name>219.101.174.58</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=3737</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=3737"/>
		<updated>2019-02-27T04:34:28Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ここから下に書き込んでください */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ここは MeryWiki で編集・執筆をするための練習や実験などに使用できるページです。初心者の方はまずこちらで Wiki の編集をしてみてください。&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;
&#039;&#039;&#039;太字は&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;で囲う&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;斜体は&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;で囲う&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
内部リンク（例：[[ダウンロード]]）は&amp;lt;nowiki&amp;gt;[[～]]&amp;lt;/nowiki&amp;gt;で囲う。&lt;br /&gt;
&lt;br /&gt;
秀丸と同じgrep&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;
[[ファイル:アップロードはどうやるんだろ.zip]]&lt;/div&gt;</summary>
		<author><name>219.101.174.58</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=3736</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=3736"/>
		<updated>2019-02-27T04:33:00Z</updated>

		<summary type="html">&lt;p&gt;219.101.174.58: /* ここから下に書き込んでください */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ここは MeryWiki で編集・執筆をするための練習や実験などに使用できるページです。初心者の方はまずこちらで Wiki の編集をしてみてください。&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;
&#039;&#039;&#039;太字は&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;で囲う&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;斜体は&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;で囲う&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
内部リンク（例：[[ダウンロード]]）は&amp;lt;nowiki&amp;gt;[[～]]&amp;lt;/nowiki&amp;gt;で囲う。&lt;br /&gt;
&lt;br /&gt;
秀丸と同じgrep&lt;br /&gt;
ファイルじゃなくて、(現在の内容)で出来れば&lt;br /&gt;
完璧なのに&lt;br /&gt;
&lt;br /&gt;
↑&lt;br /&gt;
[[このファイルから検索(マッチする行)]]&lt;br /&gt;
&lt;br /&gt;
ゲッツ&lt;br /&gt;
[[ファイル:test.zip]]&lt;/div&gt;</summary>
		<author><name>219.101.174.58</name></author>
	</entry>
</feed>