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

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

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

#include <Windows.h>

bool SetMonitorResolution(int monitor, int xRes, int yRes, int depth, int frequecy)
{
	DEVMODE				deviceMode;
	DISPLAY_DEVICE		displayDevice;
	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 is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

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