- 作成者投稿
- 2009年2月10日 6:23 am #7073kshi参加者
他のスレッドでも話題になっていますが、現状、別文書の分割表示はできないの
で、新しいグループを作ってウィンドウを並べたり、元に戻したりするマクロで
すif (CountWindow(/- EmEditor$/) == 1) {
editor.ExecuteCommandByID(4394); //新しい水平グループ
} else {
editor.ExecuteCommandByID(4407); //タブ有効化&ウィンドウ結合
Sleep(100);
shell.SendKeys(“% “);
Sleep(100);
shell.SendKeys(“X”);
Sleep(100);
editor.ExecuteCommandByID(5376); //最初の文書をアクティブにする ??
}function CountWindow(regExpCaption) {
var wnds = new Enumerator(shell.windows);
var i = 0;
for( ; !wnds .atEnd(); wnds.moveNext() ){
wnd = wnds.item();
if( wnd.Caption.search(regExpCaption) >= 0) {
i++;
}
}
return i;
}・ ウィンドウが1つなら、アクティブ文書を切り離して水平グループを作る。
・ ウィンドウが1つでないなら、結合する。という単純なマクロですが、結合したときのウィンドウサイズの制御がよくわか
りません。とりあえず最大化しようと SendKeys を使ってみるものの、タイミングが合わな
いと最大化されません。特定の文書をアクティブにするのも難しいようです。画面の有効サイズ(タスクバーを除いた)をマクロから取得する方法はないよう
なので、やはりEmEditorの機能追加に期待するしかないでしょうか。2009年2月10日 12:19 pm #7076palazzoメンバー> 画面の有効サイズ(タスクバーを除いた)をマクロから取得する方法はないようなので、やはりEmEditorの機能追加に期待するしかないでしょうか。
タスクバー抜きのデスクトップサイズでしたら、次の方法で取得出来ます。お試し下さい。
var h = new ActiveXObject(“htmlfile”);
echo(h.Script.screen.availWidth);
echo(h.Script.screen.availHeight);2009年2月10日 2:15 pm #7077kshi参加者palazzo さん、コメントありがとうございます。
できました!!ふだんはEmEditorウィンドウを縦幅いっぱいにして
タブを有効にしていますが、別文書を並べて表示したあとは
サイズを元に戻すのが手間でした。結合したあと元の文書をアクティブにするのは
まだうまく行きませんが、快適になりました。if (existAnotherWindow(/- EmEditor$/, Window)) {
editor.ExecuteCommandByID(4407); //タブ有効化&ウィンドウ結合
var h = new ActiveXObject(“htmlfile”);
// SetPosition(0, 0, h.Script.screen.availWidth, h.Script.screen.availHeight);
SetPosition(h.Script.screen.availWidth/8, 0,
h.Script.screen.availWidth * 3/4, h.Script.screen.availHeight); // 横幅 3/4
editor.ExecuteCommandByID(5376); //最初の文書をアクティブにする ??
} else {
editor.ExecuteCommandByID(4394); //新しい水平グループ
}function existAnotherWindow(regExpCaption, wSelf) {
var wnds = new Enumerator(shell.windows);
for( ; !wnds .atEnd(); wnds.moveNext() ){
wnd = wnds.item();
if( wnd.Caption.search(regExpCaption) >= 0) {
if (wnd.Caption != wSelf.Caption) {
return true;
}
}
}
return false;
}2009年2月11日 2:21 am #7080kshi参加者改良版?です。
単一ウィンドウ→上下に並べる→左右に並べる
をトグルします。単一ウィンドウに戻ったあと、元の文書をアクティブにするのは難しいですね。
[前のグループへ移動]やSetForegroundなど、ウィンドウ制御系のコマンドを使い
まわすと一応可能なのですが、うまく使いこなせていないのか、どうもEmEditor
が不安定になるようです。状況は特定できていません。文書のIDのようなプロパティを元に、document.Activate(ID) 一発で戻れると便
利な気がしました。var h = new ActiveXObject(“htmlfile”);
var sWidth = h.Script.screen.availWidth; //スクリーンの有効な横幅
var sHeight = h.Script.screen.availHeight; //スクリーンの有効な縦幅var aWnd = anotherWindow(/- EmEditor$/, Window);
if (aWnd == Window) {
editor.ExecuteCommandByID(4394); //新しい水平グループ
} else {
if (Window.Width == sWidth) {
editor.ExecuteCommandByID(4243); //左右に並べる
} else {
editor.ExecuteCommandByID(4407); //タブ有効化&ウィンドウ結合
// SetPosition(0, 0, sWidth, sHeight); //最大化
SetPosition(sWidth/8, 0, sWidth * 3/4, sHeight); //横幅 3/4
}
}function anotherWindow(regExpCaption, wSelf) {
var wnds = new Enumerator(shell.windows);
for( ; !wnds .atEnd(); wnds.moveNext() ) {
wnd = wnds.item();
if( wnd.Caption.search(regExpCaption) >= 0) {
if (wnd.Caption != wSelf.Caption) {
return wnd;
}
}
}
return wSelf;
}2009年2月12日 11:18 pm #7089kshi参加者ウィンドウの位置とサイズを調整するマクロをライブラリにアップロードさせていただきました。
http://jp.emeditor.com/modules/mydownloads/singlefile.php?cid=21&lid=339【タブ機能】と【グループ整列】との使い分けにお悩みの方、お試しください。
- 作成者投稿
- このトピックに返信するにはログインしてください。