HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■15180 / 親記事)  マルチディスプレイについて
  
□投稿者/ 尾形 -(2025/11/06(Thu) 15:03:43)
    よろしくお願いします
    桐10sです

    小型ノートパソコンに
    HDMIで大型モニタをつないで使っています
    表示画面を拡張する の設定です

    ノートパソコン側の画面は小さいので
    大型モニタ側で桐を使っています

    「ウィンドウ位置」コマンドで
    フォームの配置等操作するのに
    デスクトップのサイズを取得したいのですが
    #デスクトップサイズ 関数では
    ノート側画面しか把握できません

    良い方法ありませんでしょうか


    よろしくお願いします

引用返信 [メール受信/OFF] 削除キー/
■15181 / ResNo.1)  Re[1]: マルチディスプレイについて
□投稿者/ うにん -(2025/11/06(Thu) 17:02:22)
    PowerShellで色々やるとできるみたいですが、結構大変そう。
    プロンプトから
    Add-Type -AssemblyName System.Windows.Forms
    [System.Windows.Forms.Screen]::AllScreens
    てやってみると、こんな感じに一応必要な情報は得られますね。
    BitsPerPixel : 32
    Bounds : {X=0,Y=0,Width=1920,Height=1080}
    DeviceName : \\.\DISPLAY1
    Primary : True
    WorkingArea : {X=0,Y=0,Width=1920,Height=1032}

    BitsPerPixel : 32
    Bounds : {X=1920,Y=0,Width=1440,Height=2560}
    DeviceName : \\.\DISPLAY2
    Primary : False
    WorkingArea : {X=1920,Y=0,Width=1440,Height=2512}

    と思ったんだけど、2番目の数字が解像度は2160x3840なので、違ってる。
    拡大縮小が150%だからそれが反映された数字になってるようですね。(その情報はここには出てないが、「設定」の方で確認した)
    桐などのアプリから使用する場合はそっちの数字でいいのかな?
引用返信 [メール受信/OFF] 削除キー/
■15182 / ResNo.2)  Re[1]: マルチディスプレイについて
□投稿者/ hidetake -(2025/11/06(Thu) 17:08:07)
http://kiri
    > 「ウィンドウ位置」コマンドで
    > フォームの配置等操作する

    「ウィンドウ位置」コマンドでは、メインスクリーンしか
    相手にしてくれないのでは無いでしょうか。
    なので、メインスクリーンを Windows の設定で切り替えて
    使用するしかないように思えます。

    画面サイズも桐では処理できなさそうなので
    powershell で

    ScreenSize.ps1
    --------------
    # System.Windows.Forms アセンブリを読み込む
    Add-Type -AssemblyName System.Windows.Forms
    # 全てのスクリーン情報を取得し、リスト形式で表示する
    [System.Windows.Forms.Screen]::AllScreens | Format-List
    --------------
    を実行すれば、全てのディスプレイの情報は
    取得できるようですが。

    powershell x:\path\ScreenSize.ps1

    とか。
引用返信 [メール受信/OFF] 削除キー/
■15183 / ResNo.3)  Re[1]: マルチディスプレイについて
□投稿者/ ONnoji -(2025/11/06(Thu) 18:31:42)
    2025/11/06(Thu) 22:12:26 編集(投稿者)

    > 桐10sです
    > 小型ノートパソコンに
    > HDMIで大型モニタをつないで使っています
    > 表示画面を拡張する の設定です
    >
    > ノートパソコン側の画面は小さいので
    > 大型モニタ側で桐を使っています
    >
    > 「ウィンドウ位置」コマンドで
    > フォームの配置等操作するのに
    > デスクトップのサイズを取得したいのですが
     ・・・・・・・・・・・・・・・・・・・・
    > #デスクトップサイズ 関数では
     ・・・・・・・・・・・・・・・
    > ノート側画面しか把握できません
     ・・・・・・・・・・・・・・・

    拙作の整形ユーティリティでは、デュアルモニターでポップアップのフォームをカスケード表示するために、

    桐の位置が左モニター側か右モニター側かを計算で調査しています。
    ・・・・・・・・・・・・・・・・・・・

    詳細は忘れましたが、以下のような実測した座標をサンプルにしてテストしましたよ。
                    ・・・・・・・・・・・・・・・・・

    ちなみに、私のPCはデュアルモニターに対応していませんので、AkomeさんのPC環境でテストしていただきました。

    <参考:座標の実測値>

     ** &kiriPosX : -1928  &kiriPosY : -8  &kiriWidth : 1936  &kiriHeight : 1096
     ** &kiriPosX :  -8  &kiriPosY : -8  &kiriWidth : 1936  &kiriHeight : 1048
     ** &kiriPosX : 1912  &kiriPosY : -8  &kiriWidth : 1936  &kiriHeight : 1096
     **
     ** &desktopWidth : 1920  &desktopHeight : 1032
     **
     **              -8     1936      1928( +8 )
     **             ├──────────────┤
     ** ┌────────────┬────────────┬────────────┐
     ** │            │    1920      │            │
     ** │            │            │            │
     ** -1920           0            1920           3840
     **
     **-1928     1936      8          1912     1936      3848
     **├──────────────┤          ├──────────────┤
     **               ( +8 )       ( -8 )
     **                A         B
     ** │            │            │            │
     ** │            │            │            │
     ** └────────────┴────────────┴────────────┘


引用返信 [メール受信/OFF] 削除キー/
■15184 / ResNo.4)  Re[2]: マルチディスプレイについて
□投稿者/ hidetake -(2025/11/06(Thu) 19:18:29)
http://kiri
    > 桐の位置が左モニター側か右モニター側かを計算で調査しています。

    左にある場合、マイナスで計算されるのですね。

    > 「ウィンドウ位置」コマンドでは、メインスクリーンしか
    > 相手にしてくれないのでは無いでしょうか。

    サブのウインドウがどこにあるのか位置を把握したとして
    そのウィンドウが Windows の把握しているところの、どの
    ウィンドウなのか確認して、そのウィンドウサイズを取得
    してとなると、決め打ちしかなさそうな?


    C:\>powershell x:\path\ScreenSize.ps1


    BitsPerPixel : 32
    Bounds : {X=0,Y=0,Width=2048,Height=1152}
    DeviceName : \\.\DISPLAY1
    Primary : True
    WorkingArea : {X=0,Y=0,Width=2048,Height=1104}

    BitsPerPixel : 32
    Bounds : {X=-2560,Y=0,Width=2048,Height=1152}
    DeviceName : \\.\DISPLAY2
    Primary : False
    WorkingArea : {X=-2560,Y=0,Width=2048,Height=1104}

    BitsPerPixel : 32
    Bounds : {X=2560,Y=0,Width=1920,Height=1080}
    DeviceName : \\.\DISPLAY3
    Primary : False
    WorkingArea : {X=2560,Y=0,Width=1920,Height=1032}

    一番サイズが小さいのが右側です。


引用返信 [メール受信/OFF] 削除キー/
■15185 / ResNo.5)  Re[3]: マルチディスプレイについて
□投稿者/ hidetake -(2025/11/06(Thu) 19:29:52)
    > サブのウインドウがどこにあるのか位置を把握したとして
    > そのウィンドウが Windows の把握しているところの、どの
    > ウィンドウなのか確認して、そのウィンドウサイズを取得
    > してとなると、決め打ちしかなさそうな?

    ちなみに、

    > BitsPerPixel : 32
    > Bounds : {X=0,Y=0,Width=2048,Height=1152}
    > DeviceName : \\.\DISPLAY1
    > Primary : True
    > WorkingArea : {X=0,Y=0,Width=2048,Height=1104}
    >
    > BitsPerPixel : 32
    > Bounds : {X=-2560,Y=0,Width=2048,Height=1152}
    > DeviceName : \\.\DISPLAY2
    > Primary : False
    > WorkingArea : {X=-2560,Y=0,Width=2048,Height=1104}
    >
    > BitsPerPixel : 32
    > Bounds : {X=2560,Y=0,Width=1920,Height=1080}
    > DeviceName : \\.\DISPLAY3
    > Primary : False
    > WorkingArea : {X=2560,Y=0,Width=1920,Height=1032}

    で、一番小さいのが右側ですが、Windows上での表示は
    「2」番目となっています。


752×481 => 250×159

1762424992.jpg
/36KB
引用返信 [メール受信/OFF] 削除キー/
■15186 / ResNo.6)  Re[4]: マルチディスプレイについて
□投稿者/ hidetake -(2025/11/06(Thu) 19:33:57)
    2025/11/06(Thu) 19:41:55 編集(投稿者)

    >>Bounds : {X=0,Y=0,Width=2048,Height=1152}

    >>Bounds : {X=-2560,Y=0,Width=2048,Height=1152}

    >>Bounds : {X=2560,Y=0,Width=1920,Height=1080}

    この X= の位置で、右か左の位置かは把握できる
    わけですね。なるほど!

    X=-2560 や X=2560 は 125%表示なので、その分を考慮した
    値となって入るわけですね。2048×1.25=2560
引用返信 [メール受信/OFF] 削除キー/
■15187 / ResNo.7)  Re[5]: マルチディスプレイについて
□投稿者/ うにん -(2025/11/06(Thu) 20:28:53)
    > X=-2560 や X=2560 は 125%表示なので、その分を考慮した
    > 値となって入るわけですね。2048×1.25=2560

    うちのと、計算が逆ですね。
    うちのは(1番は100%なのでXは実寸ですが)
    2番モニタの解像度が2160であっても150%表示なので2160/1.5でWidth=1440の結果になっている。。。
    150%のサイズで表示するので(10ピクセルのサイズのものを15ピクセル使う)実質のドット数が「減る」という計算になると思うのですが

    設定でモニタ1を125%にしてもXは1920のままだった。再起動しないとだめかな。PowerShellだけ新規ウィンドウで反映された。が。

    BitsPerPixel : 32
    Bounds : {X=0,Y=0,Width=1536,Height=864}
    DeviceName : \\.\DISPLAY1
    Primary : True
    WorkingArea : {X=0,Y=0,Width=1536,Height=816}

    BitsPerPixel : 32
    Bounds : {X=1536,Y=0,Width=1440,Height=2560}
    DeviceName : \\.\DISPLAY2
    Primary : False
    WorkingArea : {X=1536,Y=0,Width=1440,Height=2512}

    XだけでなくWidthにも反映されてます。何が違うのかな...1536に小さくなってるし。
引用返信 [メール受信/OFF] 削除キー/
■15188 / ResNo.8)  Re[6]: マルチディスプレイについて
□投稿者/ hidetake -(2025/11/06(Thu) 20:51:29)
    サブディスプレイが右側ですよね。

    最初のは

    > BitsPerPixel : 32
    > Bounds : {X=0,Y=0,Width=1920,Height=1080}
    > DeviceName : \\.\DISPLAY1
    > Primary : True
    > WorkingArea : {X=0,Y=0,Width=1920,Height=1032}
    >
    > BitsPerPixel : 32
    > Bounds : {X=1920,Y=0,Width=1440,Height=2560}
    > DeviceName : \\.\DISPLAY2
    > Primary : False
    > WorkingArea : {X=1920,Y=0,Width=1440,Height=2512}

    で、メインの Width=1920 の右側にサブウィンドウがあるので
    サブの開始は X=1920


    次のは

    > BitsPerPixel : 32
    > Bounds : {X=0,Y=0,Width=1536,Height=864}
    > DeviceName : \\.\DISPLAY1
    > Primary : True
    > WorkingArea : {X=0,Y=0,Width=1536,Height=816}
    >
    > BitsPerPixel : 32
    > Bounds : {X=1536,Y=0,Width=1440,Height=2560}
    > DeviceName : \\.\DISPLAY2
    > Primary : False
    > WorkingArea : {X=1536,Y=0,Width=1440,Height=2512}

    メインの Width=1536 の右側にサブウィンドウがあるので
    サブの開始は X=1536

    と言うことでは?

    サブが左にある場合は、サブの Width 分を差し引かないと
    いけないけれど。

引用返信 [メール受信/OFF] 削除キー/
■15189 / ResNo.9)  Re[7]: マルチディスプレイについて
□投稿者/ hidetake -(2025/11/06(Thu) 20:56:53)
    > サブが左にある場合は、サブの Width 分を差し引かないと
    > いけないけれど。

    違うか。
    メインの表示サイズ変えたのに、表示サイズ(比率)とは
    関係なく、開始がそのまま反映されていると言うこと
    ですね。

    いずれにせよ、X がプラスかマイナスで、右か左で判定は
    できると思いますが。
引用返信 [メール受信/OFF] 削除キー/

次のレス10件>

スレッド内ページ移動 / << 0 | 1 >>

このスレッドに書きこむ

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -