/* (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
}
}