プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2018/07/25

Windows の画面解像度を変更するプログラム

event_note2018/07/25 0:26

Windows7 において、画面の解像度をコマンドで設定する必要がありました。

尚、コマンドで画面解像度を変更するフリーソフトがあるので、それを使えば簡単にできます。
実際、私は今まで nircmd というツールを使用していました。

しかし、これが最近ウイルス対策ソフト界隈でいろいろ問題になっているようで、上から使うなと言われたので、仕方なく代替案を探していました。

ただ、どうも Windows のシステムコマンド等ではできないようで、またレジストリも接続するディスプレイがわからない状態では設定のしようもないので、仕方なく Win32API を使った自作のプログラムを作成することにしました。

なんという車輪の再発明。

環境

  • Windows Embedded Standard 7
  • Visual Studio 2017

サンプルコード

ChangeDisplaySettings という関数を使えば画面の解像度を変更できるようです。
また、現在のディスプレイの設定は EnumDisplaySettings で取得できるようです。

#include "stdio.h"
#include "Windows.h"

int main(void)
{
    DEVMODE devMode = { 0 };
    
    if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devMode) == TRUE) {
    
        devMode.dmPelsWidth = 1920;
        devMode.dmPelsHeight = 1024;
        devMode.dmBitsPerPel = 32;
        
        if (ChangeDisplaySettings(&devMode, 0) == DISP_CHANGE_SUCCESSFUL) {
            printf("success");
        }
    }
    
    return 0;
}