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