1 件の投稿を表示中 (合計 5 個)
  • 作成者
    投稿
  • #7073
    kshi
    参加者

    他のスレッドでも話題になっていますが、現状、別文書の分割表示はできないの
    で、新しいグループを作ってウィンドウを並べたり、元に戻したりするマクロで

    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の機能追加に期待するしかないでしょうか。

    #7076
    palazzo
    メンバー

    > 画面の有効サイズ(タスクバーを除いた)をマクロから取得する方法はないようなので、やはりEmEditorの機能追加に期待するしかないでしょうか。

    タスクバー抜きのデスクトップサイズでしたら、次の方法で取得出来ます。お試し下さい。

    var h = new ActiveXObject(“htmlfile”);

    echo(h.Script.screen.availWidth);
    echo(h.Script.screen.availHeight);

    #7077
    kshi
    参加者

    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;
    }

    #7080
    kshi
    参加者

    改良版?です。
    単一ウィンドウ→上下に並べる→左右に並べる
    をトグルします。

    単一ウィンドウに戻ったあと、元の文書をアクティブにするのは難しいですね。
    [前のグループへ移動]や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;
    }

    #7089
    kshi
    参加者

    ウィンドウの位置とサイズを調整するマクロをライブラリにアップロードさせていただきました。
    http://jp.emeditor.com/modules/mydownloads/singlefile.php?cid=21&lid=339

    【タブ機能】と【グループ整列】との使い分けにお悩みの方、お試しください。

1 件の投稿を表示中 (合計 5 個)
  • このトピックに返信するにはログインしてください。