Windows 모니터 해상도 변경 하는 C++ 코드

C++ 코드라 하긴 뭐하지만 그냥 C코드라고 쓰면 기타 코드 같은 느낌이라 ++을 붙였음

예전에 윈도우 XP때 썼던 코드 같은데 VS2015, Windows10에서 테스트 해보니 별 문제 없이 잘 작동함.
그래서 여기 정리해둠

#include <Windows.h>

bool SetMonitorResolution(int monitor, int xRes, int yRes, int depth, int frequecy)
{
DEVMODEdeviceMode;
DISPLAY_DEVICEdisplayDevice;
memset(&displayDevice,0, sizeof(DISPLAY_DEVICE));
memset(&deviceMode,0, sizeof(DEVMODE));
displayDevice.cb = sizeof(displayDevice);

//i번째 모니터의 디바이스 정보를 얻어옴
EnumDisplayDevices(NULL, monitor, &displayDevice, 0);   
//디바이스 이름을 가지고 현재 화면 정보를 얻음
EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &deviceMode);

// 해상도를 바꿈
deviceMode.dmBitsPerPel = depth;
deviceMode.dmPelsWidth = xRes;
deviceMode.dmPelsHeight = yRes;
deviceMode.dmDisplayFrequency = frequecy;
deviceMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;

if (ChangeDisplaySettingsEx(displayDevice.DeviceName, &deviceMode, NULL, CDS_TEST, NULL) == DISP_CHANGE_SUCCESSFUL)
ChangeDisplaySettingsEx(displayDevice.DeviceName, &deviceMode, NULL, 0, NULL);
else
return false;
return true;
}

int main()
{
SetMonitorResolution(0, 1280, 720, 32, 60);
    return 0;
}

근데 한가지 문제점이라고 하면

요즘 해상도 변경할일이 없어서 그런건지 Avast에서는 뭔가 의심스럽다고 경고 문구를 띄움.
이거 안나오게 하는 방법은 모르겠네.


크리에이티브 커먼즈 라이선스Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.