Читать «Виртуальная библиотека Delphi» онлайн - страница 17

Unknown

 with reg do begin

  WriteString( '', 'Wallpaper', sWallpaperBMPPath );

  if( bTile )then begin

   WriteString('', 'TileWallpaper', '1' );

  end else begin

   WriteString('', 'TileWallpaper', '0' );

  end;

 end;

 reg.Free;

 // Оповещаем всех о том, что мы

 // изменили системные настройки

 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE );

end;

begin

 // пример установки WallPaper по центру рабочего стола

 SetWallpaper('c:\winnt\winnt.bmp', False );

end.

Как запретить кнопку Close [x] в заголовке окна. 

procedure TForm1.FormCreate(Sender: TObject);

var Style: Longint;

begin

 Style := GetWindowLong(Handle, GWL_STYLE);

 SetWindowLong(Handle, GWL_STYLE, Style And Not WS_SYSMENU);

end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

 if (Key = VK_F4) and (ssAlt in Shift) then begin

  MessageBeep(0); Key := 0;

 end;

end;

Каким образом можно изменить системное меню формы? 

Hе знаю как насчет акселераторов, надо поискать, а вот добавить Item — пожалуйста

type

 TMyForm=class(TForm)

 procedure wmSysCommand(var Message:TMessage); message WM_SYSCOMMAND;

end;

const

 ID_ABOUT = WM_USER+1;

 ID_CALENDAR=WM_USER+2;

 ID_EDIT = WM_USER+3;

 ID_ANALIS = WM_USER+4;

implementation

procedure TMyForm.wmSysCommand;

begin

 case Message.wParam of

 ID_CALENDAR:DatBitBtnClick(Self) ;

 ID_EDIT :EditBitBtnClick(Self);

 ID_ANALIS:AnalisButtonClick(Self);

 end;

 inherited;

end;

procedure TMyForm.FormCreate(Sender: TObject);

var SysMenu:THandle;

begin

 SysMenu:=GetSystemMenu(Handle,False);

 InsertMenu(SysMenu,Word(-1),MF_SEPARATOR,ID_ABOUT,'');

 InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Calendar, 'Calendar');

 InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Analis, 'Analis');

 InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Edit, 'Edit');

end;

Запуск внешней программы и ожидание ее завершения 

procedure TForm1.Button1Click(Sender: TObject);

var

 si : Tstartupinfo;

 p : Tprocessinformation;

begin

 FillChar( Si, SizeOf( Si ) , 0 );

 with Si do begin

  cb := SizeOf( Si);

  dwFlags := startf_UseShowWindow;

  wShowWindow := 4;

 end;

 Application.Minimize;

 Createprocess(nil,'notepad.exe',nil,nil,false,

 Create_default_error_mode,nil,nil,si,p);

 Waitforsingleobject(p.hProcess,infinite);

 Application.Restore;

end;

Как узнать местоположение специальных папок у Windows?