Delphi. Учимся на примерах | страница 58



>

Здесь вызывается та же функция, только вместо параметра WH_MOUSE ей передается WH_KEYBOARD. После этого клавиши на клавиатуре перестанут функционировать.

Шутка №4 — очистка буфера обмена

Четвертая шутка будет очищать буфер обмена и помещать туда собственный текст. Ее код:

>ClipBoard.Open;//открываем буфер обмена

>ClipBoard.Clear;//очищаем буфер обмена

>//Помещаем в буфер обмена свой текст

>Clipboard.asText:= 'Буфер обмена временно не работает!';

>ClipBoard.Close; //закрываем буфер обмена

Для работы с буфером обмена необходимо добавить в раздел use ссылку на модуль clipbrd.

Шутка №5 — назначение фона для Рабочего стола

Пятая шутка будет делать копию экрана, сохранять этот рисунок, а затем назначать его в качестве фона для Рабочего стола. Вначале в разделе implementation напишем процедуру SetWallpaper, которая будет устанавливать фоновый рисунок:

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

>begin

> reg:= TRegistry.Create;

> reg.RootKey:= hkey_current_user;

> if reg.OpenKey('Control Panel\Desktop', True) then

>  reg.WriteString('Wallpaper', sWallpaperBMPPath); {ключ содержащий путь к bmp-файлу}

> //растянуть рисунок на весь экран

> reg.WriteString('TileWallpaper', '1');

> 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;

Информацию о фоновом рисунке Рабочего стола можно найти в реестре в ветке HKEY_CURRENT_USER по пути \Control Panel\Desktop. Параметр, содержащий название рисунка, называется wallpaper. То есть, для того чтобы сменить "обои" нам необходимо изменить значение параметра wallpaper и оповестить систему о том, что были внесены изменения в реестр. Последняя строка самая важная — она обновляет системные настройки.

Функция SystemParametersInfo имеет следующие параметры:

• действие, которое необходимо выполнить (в нашем случае SPI_SETDESKWALLPAPER — установка обоев);

• зависит от значения первого параметра;

• в нашем случае — путь к файлу с рисунком;

• в последнем параметре указывается, что необходимо сделать по сле выполнения всех действий. В данном случае мы должны обновить настройки системы — для этого выбираем SPIF_SENDWININICHANGE.

Код шутки в обработчике события таймера имеет следующий вид:

>ВМР1:= Graphics.TBitmap.Create;

>//задаем размеры рисунка такие