如下程序:function DynamicResolution(X, Y: word): BOOL;
var
lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end;
end;例如:
//窗口显示模式为800*600
DynamicResolution(800,600);此时,如果系统分辨率不是800*600,程序将自动改为800*600!!!
var
lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end;
end;例如:
//窗口显示模式为800*600
DynamicResolution(800,600);此时,如果系统分辨率不是800*600,程序将自动改为800*600!!!
// SetRes(640,480);
procedure SetRes(XRes, YRes: DWord);
var
OLDX,OLDY:INTEGER;
lpDevMode : TDeviceMode;
begin
lpDevMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth:=XRes;
lpDevMode.dmPelsHeight:=YRes;
ChangeDisplaySettings(lpDevMode, 0);
end;
弹出菜单显示所有可能的分辨率并可以动态改变,不过是VB的
www.applevb.com
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
{打开显示器} SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);