Per Monitor DPI の関係?No.08825
n'Guin さん 21/11/10 16:12
 
いつも大変お世話になっております。

ノートパソコンに拡張ディスプレイをつけて作業しています。

ノートパソコンディスプレイの解像度は、1920 x 1200 で、125%表示にしています。
拡張ディスプレイの解像度は、3840 x 2160 で、100%表示にしています。

秀丸メールを起動し、拡張ディスプレイで使用するときには、右1/4 の表示で使って
います。(ウィンドゥズキー + 矢印キーで設定) おおむね、1920 × 1080 の表
示です。

秀丸メールを移動して、ノートパソコン側で全画面表示にします。

私の理解では、125%表示なので、1200 ÷ 1.25 で 960 ドット分の表示ですので、
表示されるフォルダは減るはずですが、実際には増えています。

どのような具合なのかを秀まるお様のメールあてに、画面コピーをお送りしますので、
ご確認いただければ幸いです。 

どうかよろしくお願いします。


[ ]
RE:08825 Per Monitor DPI の関係?No.08826
n'Guin さん 21/11/10 16:19
 
すみません。 追伸です。

OS: Windows 10 Home
    バージョン 21H1

秀丸メール 64bt 版
  Ver. 7.10 beta 10

にて使用しています。

なお、この現象は、Ver. 7.00 でも同じです。

[ ]
RE:08826 Per Monitor DPI の関係?No.08828
秀まるお2 さん 21/11/10 17:59
 
 画面ハードコピー拝見しました。

 これは、すみませんが誤差の範囲内ってことでがまんしていただくしか無いように
思います。

 まず、ウィンドウをモニタ間移動した時に自動で拡縮される、そのサイズは、Wind
owsの方で勝手に計算されます。

 ウィンドウの中のタイトルバーの高さとかメニューのフォントとかは、これもWind
owsが勝手に変更します。

 ウィンドウの中身の、例えばアカウント/フォルダ一覧のフォントやメール一覧の
フォントなどは、これは秀丸メールが自動でサイズを計算してフォントを作り直しま
す。

 これらの計算で、125%だと微妙に誤差が出やすいんだと思います。

 150%だとまだマシで、200%だとちょうど2倍なので、そんなに誤差は出ないです。

 ツールバーも、標準で用意しているのが100%、150%、200%の3種類で、125%だと10
0%サイズの物をそのまま使います。それでも誤差が出てしまいます。

[ ]
RE:08828 Per Monitor DPI の関係?No.08849
n'Guin さん 21/11/14 18:53
 
秀まるお様

ご返事ありがとうございます。

> これは、すみませんが誤差の範囲内ってことでがまんしていただくしか無いよう
>に思います。
モニター間を移動したときについては、了解いたしました。

一番の問題は、どちらかのモニターだけを使っているときにも、同じように表示され
てしまうことです。 すなわち、ノートパソコンのモニター(125%)だけを使ってい
るときに、ちょうどよいように表示させると、拡張ディスプレイだけで使っていると
きには間延びしてしまいます。

逆にすると、メール添付したような画面になり、目が疲れます。

何かよい知恵はないでしょうか。

# 質問の仕方が悪かったようで申し訳ありません。

[ ]
RE:08849 Per Monitor DPI の関係?No.08850
秀まるお2 さん 21/11/15 09:06
 
 秀丸メール起動時のコマンドラインでウィンドウの位置とサイズを指定するように
して、例えば内蔵モニタ用と外部モニタ用の2種類のショートカットをデスクトップ
に登録しておいて、それで位置/サイズを指定するって作戦はどうでしょうか。

 位置/サイズの指定方法は、ヘルプの「秀丸メール起動時のコマンドライン」の所
に掲載してますが、例えば

   "C:\Program files\HidemaruMail\TurukAme.exe" /(100,200,1000,800)

 みたいに指定します。そういうコマンドラインで位置とサイズを指定して、どこか
最適なサイズに調整してやるといいんじゃないかと思います。

 または、僕の作ったフリーソフトでTwinsetってのもありまして、それを使うと設
定を2種類切り替えが可能ではあります。

 他にはマクロで位置/サイズ指定も出来ます。

    loaddll "tkinfo.dll";
    #n = dllfunc("Bypass_SetWindowPos", hidemaruhandle(0), 0,
            100, 100,       //x座標, y座標
            1200, 800,      //幅, 高さ
            0);


 みたいなマクロになります。マクロでメニューを表示して位置/サイズを切り替え
たりも出来るので、もし必要ならそういうサンプルを作ることもできます。

[ ]
RE:08850 Per Monitor DPI の関係?No.08853
n'Guin さん 21/11/15 12:41
 
> 秀丸メール起動時のコマンドラインでウィンドウの位置とサイズを指定するよう
>にして、例えば内蔵モニタ用と外部モニタ用の2種類のショートカットをデスクト
>ップに登録しておいて、それで位置/サイズを指定するって作戦はどうでしょうか。
表示させる位置は決まっている(他の作業の都合上)ので、フォントの方をなんとか
する作戦のほうがよいように思いました。

マクロで頑張ってみようと思います。

[ ]
RE:08853 Per Monitor DPI の関係?No.08863
n'Guin さん 21/11/18 08:54
 
秀まるお様

表示位置は決定しているので、表示フォントを変更するマクロを作ってみました。 
一応動作しているのですが、怪しいところがありますでしょうか。

また、表示されているディスプレイに応じて、自動起動できたらいいなぁと思うので
すが、何かよい知恵があったら教えて下さい。 



// 秀丸メールのフォント変更
// DPI 変更による読み取りの問題を回避するためのマクロ
//


// 定数
#Font_Pt_100 = 975;  // 10pt
#Font_Pt_115 = 1125; // 11pt

#FolderFeed_100 = 10; // 10%
#FolderFeed_115 = 15; // 15%


loaddll "tkinfo.dll";
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";

#FolderFont_Pt = getregnum("FolderFont_Pt");
#TitleFont_Pt = getregnum("TitleFont_Pt");
#FolderFeed = getregnum("FolderFeed");


if( #FolderFont_Pt ==  #Font_Pt_100 ) {
 writeregnum "FolderFont_Pt", #Font_Pt_115;
} else if( #FolderFont_Pt ==  #Font_Pt_115 ) {
 writeregnum "FolderFont_Pt", #Font_Pt_100;

} else {
 goto ChangeFont;
}

if( #TitleFont_Pt ==  #Font_Pt_100 ) {
 writeregnum "TitleFont_Pt", #Font_Pt_115;
} else if( #FolderFont_Pt ==  #Font_Pt_115 ) {
 writeregnum "TitleFont_Pt", #Font_Pt_100;
} else {
 goto ChangeFont;
}

goto Terminate;

ChangeFont:

question "フォントをノートパソコン用に変更しますか?";

if (result == yes ) {
 writeregnum "FolderFont_Pt", #Font_Pt_115;
 writeregnum "TitleFont_Pt", #Font_Pt_115;
 writeregnum "FolderFeed", #FolderFeed_100;
} else {
 writeregnum "FolderFont_Pt", #Font_Pt_100;
 writeregnum "TitleFont_Pt", #Font_Pt_100;
 writeregnum "FolderFeed", #FolderFeed_100;
}


Terminate:
closereg;
#n = dllfunc("EnvChanged");

endmacro;


// 以下は状態を読み取るときに使用した
message "FolderFont_Pt:"+ str(#FolderFont_Pt);
//975 100%
//1125 115%

message "TitleFont_Pt:"+str(#TitleFont_Pt);
//975 100%
//1125 115%

message "FolderFeed:"+str(#FolderFeed);
//10 100%
//15 115%


[ ]
RE:08863 Per Monitor DPI の関係?No.08865
秀まるお2 さん 21/11/18 09:25
 
 ぱっと見た感じで怪しい所は無いかと思います。レジストリを書き換えてEnvChang
edする作戦でOKだと思います。


[ ]
RE:08865 Per Monitor DPI の関係?No.08872
n'Guin さん 21/11/20 12:16
 
秀まるお様

> ぱっと見た感じで怪しい所は無いかと思います。レジストリを書き換えてEnvChan
>gedする作戦でOKだと思います。

使っているうちに、送受信をしていたり、ダイアログボックスが出ているときだと、
Envchanged に失敗してしまいます。

よって、レジストリを開く前に、

if( dllfunc( "IsTransmitting" ) ) {
    message "送受信中等のため、マクロを実行できません","ChangeFont.mac", 0x30;
    endmacro;
}

をいれたほうがよいようです。

ところで、条件がわかりませんが、秀丸メールを全終了して、再起動しないと期待し
た形にならないことがあるようです。

秀丸メールを全終了(常駐秀丸メールも)して、再起動させるには、どうしたらいい
のでしょうか?

[ ]
RE:08872 Per Monitor DPI の関係?No.08877
秀まるお2 さん 21/11/22 08:36
 
 秀丸メールを再起動するマクロ命令はすみませんが存在せずです。

 現状でなんとかするとしたら、秀丸メールのマクロから秀丸エディタを起動して、
そこで少し遅延してから秀丸メールを起動させるって作戦があります。マクロの例と
しては、

 秀丸メール側:

    run "\"c:\\Program files\\Hidemaru\\Hidemaru.exe\" /x RestartHidemaruMai
l.mac";
    exitall;

 秀丸エディタ側(RestartHidemaruMail.mac)
    // 秀丸メールを遅延して起動するマクロ
    sleep 2000;
    run @"c:\program files\hidemarumail\turukame.exe";
    exit;

 みたいにする作戦になります。

 秀丸メールを再起動する仕組みは最近の秀丸メールに持ってはいるので、それをマ
クロから使えるようにすることは一応可能です。必要なら追加してもいいです。

> ところで、条件がわかりませんが、秀丸メールを全終了して、再起動しないと期待
>した形にならないことがあるようです。

 一応、EnvChangedで大丈夫なはずではありますが、エディタ・ウィンドウが存在し
てると使えないのが欠点ではあります。

[ ]
RE:08877 Per Monitor DPI の関係?No.08887
n'Guin さん 21/11/22 13:36
 
秀まるお様

いつも、ご教示ありがとうございます。


> 現状でなんとかするとしたら、秀丸メールのマクロから秀丸エディタを起動して、
>そこで少し遅延してから秀丸メールを起動させるって作戦があります。
さっそく、この作戦を試してみました。
うまくいくようです。

しかしながら、エディタウィンドウが存在するときには、動作が不安定になるようで
す。


> 秀丸メールを再起動する仕組みは最近の秀丸メールに持ってはいるので、それを
>マクロから使えるようにすることは一応可能です。必要なら追加してもいいです。
もしよろしければ、マクロ命令を追加していただけるとありがたいです。

どうかよろしくお願いいたします。

[ ]
RE:08887 Per Monitor DPI の関係?No.08889
秀まるお2 さん 21/11/22 14:06
 
 エディタ・ウィンドウが存在しててうまく動作しないのはどうしようも無いので、
たとえはマクロの先頭で

    if( hidemaruhandle(1) != -1 ) {
        message "エディタウィンドウを全部閉じてから実行してください。";
        endmacro;
    }

 を入れるなどして手作業でエディタ・ウィンドウを全部閉じてもらってない場合は
マクロを止めるようにしてもらうしか無いと思います。

 再起動も、エディタ・ウィンドウが存在してたらエラーで中断するようにしか出来
ないと思いますが、関数追加はしてみます。

[ ]
RE:08889 Per Monitor DPI の関係?No.08893
n'Guin さん 21/11/22 20:46
 
秀まるお様

ご返事ありがとうございます。

> エディタ・ウィンドウが存在しててうまく動作しないのはどうしようも無いので、
>たとえはマクロの先頭で
>
>    if( hidemaruhandle(1) != -1 ) {
>        message "エディタウィンドウを全部閉じてから実行してください。";
>        endmacro;
>    }
>
> を入れるなどして手作業でエディタ・ウィンドウを全部閉じてもらってない場合
>はマクロを止めるようにしてもらうしか無いと思います。

作業中のエディタウィンドウがあるのに、再起動されてしまうようです。
手動で「常駐秀丸メールも含めて全終了」のときには、問い合わせが出ます。


> 再起動も、エディタ・ウィンドウが存在してたらエラーで中断するようにしか出
>来ないと思いますが、関数追加はしてみます。

ありがとうございます。

[ ]
RE:08893 Per Monitor DPI の関係?No.08898
秀まるお2 さん 21/11/24 09:43
 
 「exitall」で終了させる場合で、例えば「新規メール」とかのエディタ・ウィン
ドウがある場合ですが、テストしてみた所では、もしもその「新規メール」の中身が
まったく書き換えてない場合、例えば「新規メール」を実行した直後でまだ1文字も
入力してない状態であれば、そのウィンドウについては保存するかの問い合わせ無し
で勝手に消えるようです。

 何か文字入力して書きかけ状態になっていれば、保存するかどうかの問い合わせが
出てくるはずだと思います。

 これこはれでこういう仕様になってると思います。

 ちなみに「saveexitall;」だと書きかけメールを未送信フォルダに保存して全終了
するとヘルプに書いてあるんですが、今ちょっと試してみたら、まったく何もしませ
んでした。これについてはまた見直してみます。

 それとさらに、1つ間違いがありました。もしも秀丸メールをタスクバーに常駐し
ているとしたら、「exitall」では常駐アイコンは終了せず、結果的に秀丸メールの
プロセスを再起動させることが出来ませんでした。

 saveexitallがうまいかない点は別にして、とりあえず次のβ版にはRestartHidema
ruMailって関数を追加してみます。

    loaddll "tkinfo.dll";
    #n = dllfunc("RestartHidemaruMail");

 って実行すると、書きかけメールは草稿フォルダに勝手に保存して再起動します。

    loaddll "tkinfo.dll";
    #n = dllfunc("RestartHidemaruMail", 1);

 とすると、書きかけメールについて保存するかどうかの問い合わせを出して、「キ
ャンセル」としなかった場合はちゃんと再起動します。ちなみにRestartHidemaruMai
l呼び出しの後は何もせずに即座にマクロを終了してもらう必要があります。

 そういう風になる予定ということでお願いします。

[ ]
RE:08898 Per Monitor DPI の関係?No.08908
n'Guin さん 21/11/25 10:30
 
秀 まるお 様

さまざまご精査いただき、たいへんありがとうございます。

> saveexitallがうまいかない点は別にして、とりあえず次のβ版にはRestartHidem
>aruMailって関数を追加してみます。
>
>    loaddll "tkinfo.dll";
>    #n = dllfunc("RestartHidemaruMail");
>
> って実行すると、書きかけメールは草稿フォルダに勝手に保存して再起動します。
>
>    loaddll "tkinfo.dll";
>    #n = dllfunc("RestartHidemaruMail", 1);
>
> とすると、書きかけメールについて保存するかどうかの問い合わせを出して、
>「キャンセル」としなかった場合はちゃんと再起動します。ちなみにRestartHidema
>ruMail呼び出しの後は何もせずに即座にマクロを終了してもらう必要があります。
>
> そういう風になる予定ということでお願いします。
仕様についても、さまざまご検討いただき、たいへん感謝しております。
次のベータ版を楽しみにしております。

ありがとうございました。

[ ]
RE:08908 Per Monitor DPI の関係?No.08920
n'Guin さん 21/11/29 14:17
 
秀 まるお 様


>> saveexitallがうまいかない点は別にして、とりあえず次のβ版にはRestartHide
>maruMailって関数を追加してみます。


新しい秀丸メールのベータ版をインストールして、

#n = dllfunc("RestartHidemaruMail", 1);

がうまく実行されることを確認しました。

ありがとうございました。

[ ]
RE:08920 Per Monitor DPI の関係?No.08921
秀まるお2 さん 21/11/29 15:10
 
 毎度確認ありがとうございます。

[ ]