フォントサイズ変更
- ページ: Macro/投稿
- 作者: jj?
- カテゴリー: js
- 投稿日: 2010-01-08 (金) 03:30:29
メッセージ
フォントサイズを変更します。
処理内容は、WshShell.SendKeys() でフォント設定ダイアログのキー入力を
自動化しているだけです。
- マクロ実行後は、AltやCtrlやShiftが押されていない状態になったりするようでした。
もしキー割り当てで使う場合、連続して実行するにはそれらのキーを押し直してやる
必要があります。(自環境ではタブメニューに入れてみました。)
- フォント設定のダイアログが表示されたままになることが多い場合、
WScript.Sleep( 20 );
の 20 [ms] を増やしてみてください。(自環境ではPCが重いとたまに発生。)
- デスクトップや「すべてのプログラム」で、ショートカットキー(ホットキー)に
Ctrl+Shift+V や Ctrl+Shift+Alt+Up などを割り当てているものが
あると、うまく動作しないかも知れません。
将来サクラエディタで Ctrl+マウスホイール で拡大・縮小なんてできれば
このマクロもお役御免かなぁ。
サイズを指定。(sDefaultFontSize の値、またはファイル名で指定します。)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
| |
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;
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 \"about:<hta:application windowstate=minimize />"
+ "<script>clipboardData.setData('text', '" + sFontSize + "'); close();</script>\""
, 0, true );
WshShell.Run( 'wscript.exe "' + sMacroPath + '" ' + sSELFCALLID );
Editor.SelectFont();
}else{
var WshArgs = WScript.Arguments;
if( (typeof WshArgs == "undefined")||(WshArgs.length == 0)||(WshArgs(0) != sSELFCALLID) ){
WScript.Echo( "このスクリプトはサクラエディタのマクロ用です。" );
return;
}
WScript.Sleep( 20 );
WshShell.SendKeys( "%s" ); WshShell.SendKeys( "^v" ); WshShell.SendKeys( "{ENTER}" ); }
}
|
1段階大きく。(コードは 1段階小さく と殆ど同じ)
ChangeFontSizeUp.js
1段階小さく。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| |
Main();
function Main()
{
var WshShell = new ActiveXObject("WScript.Shell");
var sSELFCALLID = "/CallByMyself"; var sMacroPath;
if( typeof Editor != "undefined" ){
sMacroPath = Editor.ExpandParameter("$M");
if( sMacroPath == "" ) return;
WshShell.Run( 'wscript.exe "' + sMacroPath + '" ' + sSELFCALLID );
Editor.SelectFont();
}else{
var WshArgs = WScript.Arguments;
if( (typeof WshArgs == "undefined")||(WshArgs.length == 0)||(WshArgs(0) != sSELFCALLID) ){
WScript.Echo( "このスクリプトはサクラエディタのマクロ用です。" );
return;
}
WScript.Sleep( 20 );
WshShell.SendKeys( "%s" ); WshShell.SendKeys( "{UP}" ); WshShell.SendKeys( "{ENTER}" ); }
}
|
こちらは、sakura.ini の [Font] セクション - "lf" キーを直接変更して
フォントサイズを変えています。
(後から SendKeys() の自動化を思いついたので没案。)
WMIを使っているのでW2k以降でないと動作しないらしいです。
注意:ANSI版サクラエディタ専用です。
Unicode版サクラエディタでは使用できません。sakuraW.iniが壊れてしまいます。
Unicode版でも使用できるよう修正しました。ANSI版1.6.5.0、Unicode版r1704で
動作確認しています。(2010/02/01)
ChangeIniFontSize.zip
- 上記の「ChangeIniFontSize.zip」をダウンロードしてマクロフォルダに入れ、キーに割り当てを行って、新規に開いたサクラエディタ上で、割り当てたキーから実行してみました。が、開いていたサクラが閉じられ、再度開かれただけで、表面上何の変化もありませんでした。疑問に思いつつも設定画面を開くと、マクロの設定画面等で表示がおかしくなっていました……。具体的には ini ファイルが全体的に文字化けしたようで、ini ファイル内の2バイト文字はすべておかしな表記になってしまいました。使用したサクラのバージョンは Unicode 版の Rev.1704 ですが、このマクロは Unicode 版では使えないのでしょうか? それとも環境上の問題……? --
- ちなみに環境は XP SP3 です。 --
- わっ、ごめんなさい!! ANSI版でしか試していませんでした。Unicode版は使ったことがないのですが、iniファイルを壊してしまうのですね、ホント申し訳ないです。環境は同じくXP SP3を使っています。ご報告に感謝&改めてお詫びいたします。 -- jj?
- サクラエディタで標準装備するべきだろう -- ba?