DOBON.NETプログラミング道掲示板

■34204 / 1階層)  起動ディスプレイの指定方法について
□投稿者/ 魔界の仮面弁士 大御所(1220回)-(2019/04/02(Tue) 13:06:45)
  • アイコン2019/04/02(Tue) 13:37:01 編集(投稿者)

    No34203に返信(masaさんの記事)
    > foreach (Screen s in Screen.AllScreens)
    > {
    >  if (s.Primary)
    Screen.AllScreens を使うよりも
    Screen.PrimaryScreen を使う方が手っ取り早いかと。


    > this.Location = s.Bounds.Location;
    .Bounds.Location ではなく、
    .WorkingArea.Location を使うべきです。

    表示位置を Bounds の左上にしてしまうと、
    タスクバー(あるいはそれに類するウィンドウ)が、
    画面の左端または上端に最前面表示で
    配置されていた場合に問題が生じます。



    > MessageBoxは「現在アクティブなウィンドウ」に起動することは分かっているのですが、
    > このアクティブなウィンドウをメインウィンドウへ変更するようなことは可能なのでしょうか?
    MessageBox.Show の第一引数(IWin32Window 型)に、
    PrimaryScreen 上にあるウィンドウ(Form や NativeWindow など)を
    渡すことで、プライマリ側の画面に表示されると思います。


    もし、PrimaryScreen 側に移動するだけでは不足で、
    その表示位置までも変更したいという要件の場合は、
    少々面倒ですが、API を使って下記の手順で対処することになります。

    SetWindowHookExW API に WH_CBT を指定して自スレッドをフックし、
    それによって通知される CBTProc のコールバックデリゲートにおいて、
    第 1 引数 int nCode が CBT_ACTIVATE (== 5) であった際に、
    第 2 引数 IntPtr wParam で示されるウィンドウハンドルに対して
    SetWindowPos API で位置(必要ならサイズも)指定する感じです。

    フックの後始末のために、UnhookWindowsHookEx API を呼び出すことも忘れずに。

    https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setwindowshookexw
    https://msdn.microsoft.com/en-us/library/windows/desktop/ms644977.aspx
    https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-unhookwindowshookex
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←起動ディスプレイの指定方法について /masa →Re[2]: 起動ディスプレイの指定方法について /masa
 
上記関連ツリー

Nomalアイコン 起動ディスプレイの指定方法について / masa (19/04/02(Tue) 09:51) #34203
Nomalアイコン 起動ディスプレイの指定方法について / 魔界の仮面弁士 (19/04/02(Tue) 13:06) #34204 ←Now
  └Nomalアイコン Re[2]: 起動ディスプレイの指定方法について / masa (19/04/02(Tue) 15:27) #34207
    └Nomalアイコン Re[3]: 起動ディスプレイの指定方法について / 魔界の仮面弁士 (19/04/02(Tue) 15:52) #34208
      └Nomalアイコン Re[4]: 起動ディスプレイの指定方法について / masa (19/04/02(Tue) 18:39) #34210
        └Nomalアイコン Re[5]: 起動ディスプレイの指定方法について / 魔界の仮面弁士 (19/04/02(Tue) 19:35) #34211
          └Nomalアイコン Re[6]: 起動ディスプレイの指定方法について / masa (19/04/03(Wed) 08:39) #34212 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -