C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 168 を表示中)
■96807 / )  Re[1]: C# Windows設定の"画面の向き"を変えたい
□投稿者/ Hongliang (1152回)-(2021/02/11(Thu) 21:23:08)
SetDisplayAutoRotationPreferences関数は、docsの該当ページに記述がありますが
https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-setdisplayautorotationpreferences
> Sets the screen auto-rotation preferences for the current process.
の通り、「画面の自動回転」に対して、自プロセスがどう振舞うかという設定ですね。
自動回転ってのはタブレットモードで左側を上にもっていったときとかになるやつです。

画面の回転設定は、ChangeDisplaySetting関数を使用すると良いようです。
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-changedisplaysettingsa
使用するDEVMODE構造体はかなり巨大で共用体も含んでいているなど複雑な構造ですが、
https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-devmodea
次のページなど翻訳済みのコードを掲載しているもいくつかあります(screen orientationについての記述もありますね)。
https://www.codeproject.com/articles/36664/changing-display-settings-programmatically
現在の状態を取得するのには、上記codeprojectのページにもありますがEnumDisplaySettingsを使用できます。

考慮するべき点として、マルチディスプレイ、リモートデスクトップ、などのときにどうするかというのが考えらえます。
試してないから分からないけどCDS_UPDATEREGISTRYの有無による再起動(再ログオン?)以降にも設定を残すかどうかってのもあるかな?
返信 編集キー/


管理者用

- Child Tree -