情報
概要
解像度を変更します。
解説
引数
S:ディスプレイセッティング列挙の要素番号で解像度を指定(0起点)
サンプルプログラム
Aコンボとはコンボ。そのW=300。
そのアイテム=ディスプレイセッティング列挙。
その変更した時は~(Aコンボの値)で解像度変更。
//本体
●EnumDisplaySettings(lpszDeviceName,iModeNum,lpDevMode)=DLL("user32.dll","DWORD EnumDisplaySettingsA(LPCTSTR lpszDeviceName,DWORD iModeNum,LPDEVMODE lpDevMode)")
●ChangeDisplaySettings(lpDevMode,dwflags)=DLL("user32.dll","LONG ChangeDisplaySettingsA(LPCTSTR lpDevMode,DWORD dwflags)")
●ディスプレイセッティング列挙
セッティングに148を確保
セッティングリストは空
1のループ
もしEnumDisplaySettings(『』,回数-1,POINTER(セッティング))=0ならば、抜ける
ビット数はセッティングの105を『INT』でバイナリ取得
横解像度はセッティングの109を『INT』でバイナリ取得
縦解像度はセッティングの113を『INT』でバイナリ取得
ディスプレイフラグはセッティングの117を『INT』でバイナリ取得
もしディスプレイフラグが0ならば、ディスプレイフラグは『カラー』
もしディスプレイフラグが1ならば、ディスプレイフラグは『白黒』
もしディスプレイフラグが2ならば、ディスプレイフラグは『カラー:インタレース』
もしディスプレイフラグが3ならば、ディスプレイフラグは『白黒:インタレース』
画面周波数はセッティングの121を『INT』でバイナリ取得
セッティングリストに(横解像度&『×』&縦解像度&『/』&ビット数&『bits/』&画面周波数&『Hz/』&ディスプレイフラグ)を配列追加
セッティングリストで戻る
!ビット数変更=$40000
!横変更=$80000
!縦変更=$100000
!周波数変更=$400000
●解像度変更(Sで)
セッティングに148を確保
新規セッティング番号は空
新規セッティング番号=S
もし新規セッティング番号が空でなければ
もしEnumDisplaySettings(『』,新規セッティング番号,POINTER(セッティング))=0でなければ
セッティングの41に(横変更+縦変更)を『INT』でバイナリ設定
もしChangeDisplaySettings(POINTER(セッティング),0)が0ならば、戻る
『エラー』と言う
最終更新:2021年12月24日 16:21