Como puedo forzar la resolucion de un monitor desde el codigo de delphi, por ejemplo si detecto que el monitor esta a 800x600 cambiarlo desde codigo a 1280 x 720, por decir un ejemplo
gracias de antemano

Posted 06 October 2009 - 11:54 AM
Posted 06 October 2009 - 12:31 PM
procedure TForm1.FormCreate(Sender: TObject); var res: string; DevMode : TDeviceMode; liRetValue : Longint; begin res := IntToStr(Screen.Width)+'x'+IntToStr(Screen.Height); if (res = '800x600') then begin if EnumDisplaySettings(nil,143,Devmode) then liRetValue := ChangeDisplaySettings(DevMode,0); SendMessage(HWND_BROADCAST, WM_DISPLAYCHANGE, SPI_SETNONCLIENTMETRICS, 0); case liRetValue of DISP_CHANGE_SUCCESSFUL: ShowMessage('DISP_CHANGE_SUCCESSFUL: The settings change was successful.'); DISP_CHANGE_RESTART : ShowMessage('DISP_CHANGE_RESTART: The computer must be restarted in order for the graphics mode to work.'); DISP_CHANGE_BADFLAGS : ShowMessage('DISP_CHANGE_BADFLAGS: An invalid set of flags was passed in.'); DISP_CHANGE_FAILED : ShowMessage('DISP_CHANGE_FAILED: The display driver failed the specified graphics mode'); DISP_CHANGE_BADMODE : ShowMessage('DISP_CHANGE_BADMODE: The graphics mode is not supported'); DISP_CHANGE_NOTUPDATED: ShowMessage('DISP_CHANGE_NOTUPDATED: Unable to write settings to the registry.'); end; end; end;
Prueba con eso.
Saludos.
Posted 06 October 2009 - 01:41 PM
Posted 06 October 2009 - 02:25 PM
Muchas gracias enecumene, me sirvio a la perfeccion
Posted 06 October 2009 - 02:32 PM
function SetScreenResolution(Ancho, Altura: integer): Longint; var DeviceMode: TDeviceMode; begin with DeviceMode do begin dmSize := SizeOf(TDeviceMode); dmPelsWidth := Ancho; dmPelsHeight := Altura; dmFields := DM_PELSWIDTH or DM_PELSHEIGHT; end; Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY); end;
Posted 06 October 2009 - 02:35 PM
Posted 06 October 2009 - 02:37 PM
Muchas gracias por publicar tu solución Ramiro.
Salud OS
PD,me tome el atrevimiento de modificar tu post, le agregue la etiqueta de delphi.