「アクティブなタブのマクロを実行する」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Sukemaru (トーク | 投稿記録)
ページを新規作成
 
Sukemaru (トーク | 投稿記録)
編集の要約なし
1行目: 1行目:
アクティブなタブを '''マクロとして実行''' します。[https://www.haijin-boys.com/discussions/4814]
== ソースコード ==
<source lang="javascript">
<source lang="javascript">
#title = "このマクロを実行"
#title = "このマクロを実行"
10行目: 14行目:
  * ※ タブの実体ファイルの拡張子だけを確認し、
  * ※ タブの実体ファイルの拡張子だけを確認し、
  *    ファイルの内容までは確認せずにマクロとして実行する
  *    ファイルの内容までは確認せずにマクロとして実行する
*  (実行条件を拡張子ではなく編集モードにしたほうがよいかも?)
  * ※ Mery 用のマクロでなくても「これを選択」コマンドが実行されるので
  * ※ Mery 用のマクロでなくても「これを選択」コマンドが実行されるので
  *  [マクロのカスタマイズ] に登録されてしまうことになる
  *  [マクロのカスタマイズ] に登録されてしまうことになる
44行目: 47行目:


== memo ==
== memo ==
拡張子があっているか分からない…
* ''editor.ExecuteCommandByID( 2175 );'' <br> だと実行されないようなので、WSH のキーストーロークエミュレーションで「実行(R)」のショートカットキー '''F4''' を送信させるようにしてあります。<br> <span style="color:#c00;">「実行(R)」のショートカットキーを変更している場合、このマクロは正しく機能しません。</span>
* 設定変数に列挙した拡張子が妥当かどうか分かりません…。<br> 実行条件は拡張子ではなく編集モードにしたほうがよいかも?

2019年8月12日 (月) 18:00時点における版

アクティブなタブを マクロとして実行 します。[1]


ソースコード

#title = "このマクロを実行"
#tooltip = "アクティブなタブのマクロを実行する"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",15

/**
 * [マクロ] メニューの「これを選択」と「実行」をおこなう
 * 
 * ※ タブが未保存の場合はマクロを実行しない
 * ※ タブの実体ファイルの拡張子だけを確認し、
 *    ファイルの内容までは確認せずにマクロとして実行する
 * ※ Mery 用のマクロでなくても「これを選択」コマンドが実行されるので
 *   [マクロのカスタマイズ] に登録されてしまうことになる
 */

// ■ マクロ用の拡張子
var reg = /^(?:js|pl|php|py|rbs|vbs)$/;



var d = editor.ActiveDocument;
var dName = d.Name, dSaved = d.Saved;

if ( ! dName || ! dSaved ) {
  Status = "ファイルが保存されていません。";
}
else if ( dName == ScriptName ) {
  Status = "「このマクロを実行」";
}
else {
  var ext = dName.substr( dName.lastIndexOf( "\." ) + 1 ).toLowerCase();
  if ( reg.test( ext ) ) {
    Sleep( 200 );	// キーを放すまでの時間稼ぎ
    editor.ExecuteCommandByID(MEID_MACROS_SELECT_THIS=2175);	// これを選択
    new ActiveXObject( "WScript.Shell" ).SendKeys( "{F4}" );	// マクロの実行
  }
  else {
    Status = "このファイルはマクロではありません。";
  }
}


memo

  • editor.ExecuteCommandByID( 2175 );
    だと実行されないようなので、WSH のキーストーロークエミュレーションで「実行(R)」のショートカットキー F4 を送信させるようにしてあります。
    「実行(R)」のショートカットキーを変更している場合、このマクロは正しく機能しません。
  • 設定変数に列挙した拡張子が妥当かどうか分かりません…。
    実行条件は拡張子ではなく編集モードにしたほうがよいかも?
スポンサーリンク