본문 바로가기

Delphi/꿀팁

모니터 해상도 변경하기

var
  DeviceMode: TDeviceMode;
  DisplayDevice: TDisplayDevice;
begin
  Result := False;
  
  ZeroMemory(@DisplayDevice, SizeOf(DisplayDevice));
  DisplayDevice.cb := SizeOf(TDisplayDevice);
  
  //변경할 모니터의 인덱스로 모니터 여부 확인
  if EnumDisplayDevices(nil, Index, DisplayDevice, 0) then begin
    ZeroMemory(@DeviceMode, SizeOf(DeviceMode));
    DeviceMode.dmSize := SizeOf(TDeviceMode);
    DeviceMode.dmPelsWidth := Width; //변경할 가로 길이
    DeviceMode.dmPelsHeight := Height; //변경할 세로 길이
    DeviceMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
   
    //해상도 변경 가능여부 테스트
    if (ChangeDisplaySettingsEx(PChar(@DisplayDevice.DeviceName[0]), DeviceMode, 0, CDS_TEST, nil) = DISP_CHANGE_SUCCESSFUL) then begin 
      //해상도 변경 
      Result := ChangeDisplaySettingsEx(PChar(@DisplayDevice.DeviceName[0]), DeviceMode, 0, 0, nil) = DISP_CHANGE_SUCCESSFUL;
    end;
  end;
end;

 

반응형