テーマ:未分類(甘党)

日々、思いついたことを記録します。

KBMCap.mac v0.00000000000000000000000000000001

2007年06月29日 05時28分17秒 | 秀丸エディタ Tips
以下は、作りかけのソースのバックアップです。
---------------------

//
// キーボードマクロ取り込み用秀丸マクロ
$TITLE_STRING = "KBMCap.mac v0.00000000000000000000000000000001";
//
// Copyright (C) 2007 ymiz777
//
// このマクロは、[1]~[9]に関連したショートカットキー(Shift++Ctrl+Alt+[数字]等)に割り付けてください。
// キーボードマクロの内容を、[1]~[9]に関連したショートカットキー(Shift+Alt+[数字]等)に割り付けます。
// $SAVE_DIRに指定されたディレクトリに、キーボードマクロの内容のマクロファイルを作成します。
// 数字キーに対応して、保存した日時をiniファイルに保存します。

// 同じフォルダに、以下のファイルを置いてください。
$INI_FNAME = currentmacrodirectory + "KBMCap.ini";     // iniファイル名
// CBHistCapCall.mac v0.01                                // このマクロと対で使用する、このマクロで保存したマクロファイル呼び出し用マクロ
//なお、CBHistCapCall.macのマクロは、数字キー[1]~[9][0]に関連したショートカットキーを割り当ててください。
//
// 秀丸エディタのマクロでは、「キー操作の保存」ダイアログを表示しかできない。このため、WSHで、外部からキー操作をシミュレーションして、保存する。

// タイトルの変更
$titlebar = $TITLE_STRING + "の実行中";
title $titlebar;

///////////////////////////
// 押されたキーのスキャン([0]~[9]キー) (なんとなく、早めにチェックしてみた。)
///////////////////////////
#key = 1;    // [0]=0x30 ~ [9]=0x39
while ( #key < 10 ) {
    if (iskeydown(#key+0x30)) {
        break;
    }
    #key = #key + 1;
}


///////////////////////////
// iniファイルの処理
///////////////////////////
//デバッグモード(0:通常モード、1:デバッグモード)
#DEBUG_FLAG = getininum($INI_FNAME, "HidemaruControl", "DEBUG_FLAG");
if (#DEBUG_FLAG == 1) {
    $debuginfo_title = "[" + currentmacrobasename + "]";    // debuginfo出力のタイトル
    debuginfo 1;        // debuginfo出力の有効化
    debuginfo $debuginfo_title + "Debug Mode : On";
//    $run_options = " //Nologo //X ";        // .macのdebuginfoとVBスクリプトのデバッガ有効にする場合。今回は、デバッガは、使えない。
    $run_options = " //Nologo ";            // .macのdebuginfoだけで、VBスクリプトのデバッガ無効にする場合
}

//取り込んだキーボードマクロの保存ファイルを作成するディレクトリ
$SAVE_DIR = getinistr($INI_FNAME, "CaptureFunction", "SAVE_DIR");
if (leftstr($SAVE_DIR,1)==".")
    // 現在実行中のマクロのフォルダの下にディレクトリを作成する場合
    $SAVE_DIR = currentmacrodirectory + rightstr($SAVE_DIR,strlen($SAVE_DIR)-1);
else if ((leftstr($SAVE_DIR,1)=="%") && (rightstr($SAVE_DIR,1)=="%"))
    // 環境変数を参照する場合
    $SAVE_DIR = getenv(midstr($SAVE_DIR,1,strlen($SAVE_DIR)-2));
debuginfo $debuginfo_title + "$SAVE_DIR : "" + $SAVE_DIR + """;

// キーボードマクロを保存するファイル名のプリフィックスと拡張子
$SAVE_FNAME_PREFIX = getinistr($INI_FNAME, "CaptureFunction", "SAVE_FNAME_PREFIX");
debuginfo $debuginfo_title + "$SAVE_FNAME_PREFIX : "" + $SAVE_FNAME_PREFIX + """;
$SAVE_FNAME_EXT = getinistr($INI_FNAME, "CaptureFunction", "SAVE_FNAME_EXT");
debuginfo $debuginfo_title + "$SAVE_FNAME_EXT : "" + $SAVE_FNAME_EXT + """;

//キーボードマクロ履歴を保存する個数
#MAX_NUM_OF_CAPTURE = getininum($INI_FNAME, "CaptureFunction", "MAX_NUM_OF_CAPTURE");
debuginfo $debuginfo_title + "#MAX_NUM_OF_CAPTURE : " + str(#MAX_NUM_OF_CAPTURE);

// 呼び出しメニューデータのセクション名とキープリフィックス
$CALL_MENU_SECSSION_NAME = getinistr($INI_FNAME, "CaptureFunction", "CALL_MENU_SECSSION_NAME");
debuginfo $debuginfo_title + "$CALL_MENU_SECSSION_NAME : "" + $CALL_MENU_SECSSION_NAME + """;
$CALL_MENU_KEY_PREFIX = getinistr($INI_FNAME, "CaptureFunction", "CALL_MENU_KEY_PREFIX");
debuginfo $debuginfo_title + "$CALL_MENU_KEY_PREFIX : "" + $CALL_MENU_KEY_PREFIX + """;

// WSHのEXEファイル名
$WSH_EXE_FNAME = getinistr($INI_FNAME, "CaptureFunction", "WSH_EXE_FNAME");
debuginfo $debuginfo_title + "$WSH_EXE_FNAME : "" + $WSH_EXE_FNAME + """;

// VBSファイル名
$VBS_FNAME = currentmacrodirectory + "" + getinistr($INI_FNAME, "CaptureFunction", "VBS_FNAME");
debuginfo $debuginfo_title + "$VBS_FNAME : "" + $VBS_FNAME + """;


//////////////
//秀丸エディタにおける「キー操作の保存」ダイアログボックス関連のキー
//////////////
//ダイアログ上のキーシーケンス(クリップボード貼付、[Enter]キー)
$KEY_SEQUENCE = getinistr($INI_FNAME, "SaveRecordDialogBox", "KEY_SEQUENCE");
debuginfo $debuginfo_title + "$KEY_SEQUENCE : "" + $KEY_SEQUENCE + """;

//タイムアウト時のエラーメッセージ
$TIMEOUT_ERROR_MESSAGE = getinistr($INI_FNAME, "SaveRecordDialogBox", "TIMEOUT_ERROR_MESSAGE");
debuginfo $debuginfo_title + "$TIMEOUT_ERROR_MESSAGE : "" + $TIMEOUT_ERROR_MESSAGE + """;

//ウィンドウタイトル
$WINDOW_TITLE_OPTION = getinistr($INI_FNAME, "SaveRecordDialogBox", "WINDOW_TITLE_OPTION");
debuginfo $debuginfo_title + "$WINDOW_TITLE_OPTION : "" + $WINDOW_TITLE_OPTION + """;

//タイムアウト値(秒)
$TIMEOUT_OPTION = getinistr($INI_FNAME, "SaveRecordDialogBox", "TIMEOUT_OPTION");
debuginfo $debuginfo_title + "$TIMEOUT_OPTION : "" + $TIMEOUT_OPTION + """;


///////////////////////////
// 各種初期化
///////////////////////////
//ディレクトリ作成コマンド
$MD_COMMAND = getenv("ComSpec") + " /C " + "MKDIR ";
$MD_COMMAND_OPT = " >NUL";

//ファイル削除コマンド
$DEL_COMMAND = getenv("ComSpec") + " /C " + "DEL ";
$DEL_COMMAND_OPT = " >NUL";

// 表示メッセージ作成用一時変数
$message_str = "";

// 保存ファイル作成用一時変数
$save_fname = "";

// ★[TODO]まずは、クリップボード履歴が有効になっているかどうかをチェック


// ファイルを保存するディレクトリ作成
// ★[TODO]新規であれば、ディレクトリ作成の確認をしたい。
$md_commandline = $MD_COMMAND + " "" + $SAVE_DIR + """ + $MD_COMMAND_OPT;
debuginfo $debuginfo_title + "$md_commandline=" + $md_commandline;
run $md_commandline;


///////////////////////////
// メイン処理部スタート
///////////////////////////

if ((1<=#key) && (#key<=#MAX_NUM_OF_CAPTURE)) {
    // このマクロが、[1]~[#MAX_NUM_OF_CAPTURE]の数字キーに関連したショートカットキーで起動された場合

    //キーボードマクロ保存ファイル名の生成
    $save_fname = $SAVE_DIR + "" + $SAVE_FNAME_PREFIX + str(#key) + $SAVE_FNAME_EXT;
    debuginfo $debuginfo_title + "$save_fname=" + $save_fname;

    // キーボードマクロ保存ファイルの削除(★[TODO]本当は、削除できているかどうかを確認したいところ。->ROの場合など)
    $del_commandline = $DEL_COMMAND + " "" + $save_fname + "" " + $DEL_COMMAND_OPT;
    debuginfo $debuginfo_title + "$del_commandline=" + $del_commandline;
    run $del_commandline;

    // VBSのキー操作は、クリップボード経由で、「キー操作の保存」ダイアログボックスのファイル名にペーストして、[Enter]というキー操作をシミュレーションする。
    // ★[TODO] クリップボードを壊さないように、ヒストリ機能が有効/無効をチェックして、無効であれば、一時、現在のクリップボードの内容を退避する必要がある。
    beginclipboardread;
    setclipboard $save_fname;
    debuginfo $debuginfo_title + "set clipboard...";

    // vbsの呼び出し : $run_commandline = "wscript //Nologo KBMCap.vbs "^V{Enter}" "キーボードマクロを保存できませんでした。" /W:"キー操作の保存" /T:3";
    $run_commandline = """ + $WSH_EXE_FNAME + "" " + $run_options + " "" + $VBS_FNAME + "" "" + $KEY_SEQUENCE + "" "" + $TIMEOUT_ERROR_MESSAGE + "" " + $WINDOW_TITLE_OPTION + " " + $TIMEOUT_OPTION;
    debuginfo $debuginfo_title + "$run_commandline=" + $run_commandline;
    run $run_commandline;

    // キー操作の読込みダイアログボックスを開く
    saverecord;

    // ★[todo]念のため作成ファイルのチェックと、クリップボードの復帰

    // ★[todo]iniへの登録
}
else {
    // このマクロが、[1]~[9]の数字キーに関連しないショートカットキーで起動された場合

    // ★[TODO]メニューを表示して、登録させる
}

endmacro;



最新の画像もっと見る

コメントを投稿