Macro/投稿/21 の変更点

http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F21


Top > Macro > 投稿 > 21
  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • Macro/投稿/21 へ行く。

* カーソル直前のマクロファイルを実行 [#tf8b2e2c]
-ページ: [[Macro/投稿]]
-作者: [[gis_dur]]
-カテゴリー: js
-投稿日: 2004-02-26 (木) 21:34:39

** メッセージ [#w62618c8]
#code(javascript){{
// 【0executeMacro.js】
// 必ず正しく指定
// ## 設定 ##
 // スクリプト自身のファイル名
 var SCRIPT_NAME = "0executeMacro.js";
 // マクロ群のあるフォルダのフルパス
 var MACRO_FOLDER = "C:\\...\\sakura\\macro";
 // マクロファイルの拡張子(小文字,正規表現不可)
 var MACRO_EXT = ".mac|.ppa|.js|.vbs";
 // Sendkeys用文字列
 // shortcutキーも可
 // %:alt ^:ctrl +:shift
 var KEYS_OPENMACRO = "%ta";//マクロ開く
 var KEYS_EXECMACRO = "%td";//マクロ実行 
// ## 設定終了 ##

var DIALOG_TYPE=1;
var DLGRET_AUTO=-1;
var DLGRET_OK=1;
var DLGRET_CANCEL=2;
var RECKEY_NAME="RecKey.mac";
MACRO_EXT="|"+MACRO_EXT+"|";

var shell=new ActiveXObject("WScript.Shell");
var sel_text=get_left();
var astr_fileNames=get_macros(sel_text);
var dlg_return=pop_dialog(astr_fileNames);

if (dlg_return!=DLGRET_CANCEL) {
 del_left();
 var path=MACRO_FOLDER+"\\"+astr_fileNames[0];
 shell.Sendkeys(KEYS_OPENMACRO);
 shell.Sendkeys(path);
 shell.Sendkeys("{ENTER}");
 shell.Sendkeys(KEYS_EXECMACRO);
}

function get_left() {
 var str="";
 Editor.CancelMode(0);
 Editor.WordLeft_Sel(0);
 str=Editor.GetSelectedString(0);
 if (str.match(/\x0D\x0A|\x0D|\x0A/)) {
  str="";
 }
 Editor.Right(0);
 return str;
}
function del_left() {
 Editor.CancelMode(0);
 Editor.WordLeft_Sel(0);
 Editor.Delete(0);
}
function get_macros(in_sel_text) {
 var fsys=new ActiveXObject("Scripting.FileSystemObject");
 var fld=fsys.GetFolder(MACRO_FOLDER);
 var fset=new Enumerator(fld.Files);
 var NOEXT=-1;
 var str="";
 var ext="";
 var arr=new Array();
 if (in_sel_text=="") return arr;
 for (;!fset.atEnd();fset.moveNext()) {
  str=fset.item().Name.toLowerCase();
  i=str.lastIndexOf(".");
  if (i==NOEXT) continue;
  ext="|"+str.substring(i)+"|";
  if (MACRO_EXT.indexOf(ext)==NOEXT) continue;
  if (str==SCRIPT_NAME.toLowerCase()) continue;
  if (str==RECKEY_NAME) continue;
  if (str.indexOf(in_sel_text)==0) arr.push(str);
 }
 return arr;
}
function pop_dialog(in_arr) {
 if (in_arr.length!=1) return DLGRET_CANCEL;
 var message="";
 message+="マクロ「"+in_arr[0]+"」を実行します\n";
 return shell.Popup(message,0,"マクロ実行の確認",DIALOG_TYPE);
}
}}

----

#comment

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS