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