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

Escrito 06 octubre 2009 - 11:54
Escrito 06 octubre 2009 - 12:31
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.
Escrito 06 octubre 2009 - 01:41
Escrito 06 octubre 2009 - 02:25
Muchas gracias enecumene, me sirvio a la perfeccion
Escrito 06 octubre 2009 - 02:32
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;
Escrito 06 octubre 2009 - 02:35
Escrito 06 octubre 2009 - 02:37
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.