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;
>//задаем размеры рисунка такие