/* (Tab=4) [概要] フォントサイズを変更します。 デフォルトは sDefaultFontSize の値です。本マクロのファイル名に "FontSize=nn" (nnは数字) という文字列が含まれていれば、それを フォントサイズとして使用します。(大文字・小文字は区別されません。) 例: "ChangeFontSize=16.js" → サイズを16に。 [制限] 実行中に、他のアプリケーションをアクティブにすると誤動作します。 [変更履歴] 2012/07/24 Win7対応(?)。但しCtrlキーを押していると誤動作する。(Altキーは大丈夫かも?) 2010/01/06 新規 */ // フォントサイズのデフォルト値 var sDefaultFontSize = "10"; Main(); function Main() { var WshShell = new ActiveXObject("WScript.Shell"); var sSELFCALLID = "/CallByMyself"; // 誤実行防止用の識別子 var sMacroPath; var sFontSize; var n; if( typeof Editor != "undefined" ){ // サクラエディタからマクロ実行された。 sMacroPath = Editor.ExpandParameter("$M"); if( sMacroPath == "" ) return; // [名前を指定してマクロ実行...] の場合 // 本ファイル名に "FontSize=nn" が含まれていれば、フォントサイズとして使用。 sFontSize = sDefaultFontSize; if( sMacroPath.match( /.*FontSize=([0-9]+)[^\\]*$/i ) != null ){ n = parseInt( RegExp.$1 ); if( (n >= 8) && (n <= 72) ){ sFontSize = RegExp.$1; } } // フォントサイズをクリップボードへコピー (プロセス終了まで待つ) // WshShell.Run( "mshta.exe \"javascript:clipboardData.setData('text', '" // + sFontSize + "'); close();\"", 0, true ); // ↑マクロで実行すると遅かった。(wscriptでの実行だとOK) WshShell.Run( "mshta.exe \"about:" + "\"" , 0, true ); // wscript で本ファイルを実行 WshShell.Run( 'wscript.exe "' + sMacroPath + '" ' + sSELFCALLID ); // フォント設定のダイアログ Editor.SelectFont(); }else{ // 本マクロから wscript で実行された。 var WshArgs = WScript.Arguments; if( (typeof WshArgs == "undefined")||(WshArgs.length == 0)||(WshArgs(0) != sSELFCALLID) ){ WScript.Echo( "このスクリプトはサクラエディタのマクロ用です。" ); return; } // 少し待つ WScript.Sleep( 20 ); // とりあえず20ms //2012/07/24 Win7では誤動作する。 // 例えばAlt+Tab はタスクスイッチャーの動作になってしまう。(WinXPではOKだった。) // おとなしく単純に Alt+S や Enter にする。但し Alt や Ctrl が押されているとうまく動作しない。 // // SendKeys() はModifierキーが押されていたり、IMEがONだとうまく動作しない。 // // Ctrlが押されていると Alt+S → Alt+Ctrl+S で[サイズ(S)]にフォーカス移動しない。 // // Shiftが押されていると "1" → "!" になる。IMEがONだと全角入力になる。 // // Modifierキーはなるべく最初から押下状態に、数字入力はペーストとした。 // // // %=ALT, ^=CTRL, +=SHIFT // // [サイズ(S)] にフォーカス移動 // WshShell.SendKeys( "%^+{TAB}%^+{TAB}%^+{TAB}%^+{TAB}" ); // Alt+Ctrl+Shift +Tab // // クリップボードからペースト (Altを押しているとだめらしい。ShiftはOKだった) // WshShell.SendKeys( "^v" ); // Ctrl +V // // [OK] // WshShell.SendKeys( "%^+{ENTER}" ); // Alt+Ctrl+Shift +Enter // %=ALT, ^=CTRL, +=SHIFT // [サイズ(S)] にフォーカス移動 WshShell.SendKeys( "%s" ); // Alt +S // クリップボードからペースト WshShell.SendKeys( "^v" ); // Ctrl +V // [OK] WshShell.SendKeys( "{ENTER}" ); // Enter } }