unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  old_width:integer; //用于保存为改变设置前的屏幕分辨率宽
  old_height:integer; //用于保存为改变设置前的屏幕分辨率高
  changeflag:boolean; //用于表明是否改变了屏幕设置
  device_mode:tDevicemode; //用于表明设备模式
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
const
  form_width=800;
  form_height=600;
begin
  {初始化改变标志}
  changeflag:=false;
   {判断分辨率,若不一致,则改变屏幕分辨率}
   if (screen.Width<>form_width)or(screen.Height<>form_Height)then
     if EnumDisplaySettings(nil,0,device_mode)then
       begin
         old_width:=GetSystemMetrics(SM_CXSCREEN);
         old_height:=GetSystemMetrics(SM_CYSCREEN);
         changeflag:=true;
         {改变设置}
         device_mode.dmFields:=dm_pelswidth OR dm_pelsheight;
         device_mode.dmPelsWidth:=form_width; //给宽度赋值
         device_mode.dmPelsHeight:=form_height; //给高度赋值
         ChangeDisplaySettings(device_mode,0); //改变设置
         {修改成功,显示信息}
         showmessage('设置成功,设置为:'+inttostr(form_width)+'*'+inttostr(form_height)+';'+'原设置为:'+inttostr(old_width)+'*'+inttostr(old_height));
       end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  {判断是否改变,是,则恢复设置}
  if changeflag=true then
  if EnumDisplaySettings(nil,0,device_mode)then
     begin
     {恢复设置}
     device_mode.dmFields:=dm_pelswidth OR dm_pelsheight;
     device_mode.dmPelsWidth:=old_width; //赋原来设置的宽度
     device_mode.dmPelsHeight:=old_height; //赋原来设置的高度
     ChangeDisplaySettings(device_mode,0); //恢复设置
     end;
  showmessage('恢复设置成功,设置:'+inttostr(old_width)+'*'+inttostr(old_height));
close;
end;end.不知道这个方法怎么样?
我没有试过菜单