Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

var h: THandle;

begin

 h:= LoadImage(0, 'C:\TheWall\Magic.ani', IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE);

 if h = 0 then ShowMessage('Cursor not loaded')

 else begin

Screen.Cursors[1] := h;

Form1.Cursor := 1;

 end;

end;
 

Как

узнать текущее разрешение экрана?

Из советов Nomadic'a :

Советуем ознакомиться с Help topic относительно глобального обьекта Screen типа TScreen. У этого обьекта есть свойства Width и Height.

{ Example }

begin

 iScreenWidth := Screen.Width;

end;

Заодно и другие свойства могут Вас заинтересовать, например, Fonts и Cursors.

Как изменить изображение кнопки `Пуск`

The_Sprite советует:

Пример из серии "Что можно сделать с рабочим столом". В общем, это обычный трюк с кнопкой "Пуск" (Start).

Совместимость: все версии Delphi

{ объявляем глобальные переменные }

var

 Form1: TForm1;

 StartButton: hWnd;

 OldBitmap: THandle;

 NewImage: TPicture;

{ добавляем следующий код в событие формы OnCreate }

procedure TForm1.FormCreate(Sender: TObject);

begin

 NewImage := TPicture.create;

 NewImage.LoadFromFile('C:\Windows\Circles.BMP');

 StartButton := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil);

 OldBitmap := SendMessage(StartButton, BM_SetImage, 0, NewImage.Bitmap.Handle);

end;

{ Событие OnDestroy }

procedure TForm1.FormDestroy(Sender: TObject);

begin

 SendMessage(StartButton, BM_SetImage, 0, OldBitmap);

 NewImage.Free;

end;

Как программно заменить обои на рабочем столе? III

Igor Nikolaev aKa The Sprite советует:

program wallpapr;

uses Registry, WinProcs;

procedure SetWallpaper(sWallpaperBMPPath: String; bTile: boolean);

var reg : TRegIniFile;

begin

 // Изменяем ключи реестра

 // HKEY_CURRENT_USER

 // Control Panel\Desktop

 // TileWallpaper (REG_SZ)

 // Wallpaper (REG_SZ)

 reg := TRegIniFile.Create('Control Panel\Desktop');

 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;

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

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

//Эту строчку надо написать где-то в программе.
 

Как программно заменить обои на рабочем столе? IV

Владимир Рыбант пишет:

Советы «Как програмно заменить обои на рабочем столе» I, II, III не изменяют обои, если в Windows работает в режиме Active Desktop

Нужно использовать следующее: 

uses ComObj, ShlObj;

procedure ChangeActiveWallpaper;

const CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';

var ActiveDesktop: IActiveDesktop;

begin

 ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;

 ActiveDesktop.SetWallpaper('c:\windows\forest.bmp', 0);

 ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);

end;

Этим способом можно также изменять обои картинками jpg и gif. 

А как поместить свою иконку на taskbar, там где часы и переключатель клавиатуры?

Nomadic советует:

A: В библиотеке rxLib есть компонент TrxTrayIcon. Заметьте, что для корректного завершения работы операционной системе вам потребуется обрабатывать сообщение WM_QUERYENDSESSION. 

Как ограничить перемещение курсора мыши какой-либо областью экрана?

Одной строкой 

Nomadic отвечает:

A: ClipCursor. Учтите, что использование этой функции – плохой тон. 

Поделиться с друзьями: