PDA

Ver la Versión Completa : Obtener frecuencia del monitor


|NoName|
28-01-2007, 23:06:06
Quiero ejecutar una aplicación a una resolución predeterminada, pero claro, cuando la misma se cierra es necesario volver a la configuración anterior.

http://www.clubdelphi.com/foros/showthread.php?t=37575

El código publicado en ese hilo me funciona correctamente salvo por el detalle que no tiene en cuenta la frecuencia del monitor.
Descubrí que la misma se puede obtener utilizando EnumDisplaySettings() pero sinceramente no consigo implementarlo.
Le agradezco desde yá a cualquiera que me pueda dar una mano para incorporar esta característica.


uses Windows;

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;

// implementación

var
AnchoViejo, AlturaVieja: integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
AnchoViejo := GetSystemMetrics(SM_CXSCREEN);
AlturaVieja := GetSystemMetrics(SM_CYSCREEN);
SetScreenResolution(800, 600);
end;


// reestablecer
procedure TForm1.Button2Click(Sender: TObject);
begin
SetScreenResolution(AnchoViejo, AlturaVieja);
end;