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에서는 뭔가 의심스럽다고 경고 문구를 띄움.
이거 안나오게 하는 방법은 모르겠네.


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다