Arial Century Courier Georgia Tahoma Verdana Times New Roman
-
+
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. Учтите, что использование этой функции – плохой тон.