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

ЖАНРЫ

Delphi. Учимся на примерах

Парижский Сергей Михайлович

Шрифт:

 //для отключения мыши и клавиатуры

 Dummy: integer = 0;

 OldKbHook: HHook = 0;

 //для снятия копии экрана

 ВМР1: Graphics.TBitmap;

 DC1: HDC;

 Image1: TImage;

 // для поиска случайного рисунка

 fn: TSearchRec;

 Finds: integer;

 i: integer;

 endval: integer;

 err_str: string;//вывод
ошибки

 tm: TSystemTime; //изменение времени

 reg: TRegistry; //для работы с реестром

 JokeNum: shortint; //номер шутки, которую следует выполнить

 curs: TRect; //координаты прямоугольника

implementation

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;

function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall;

begin

 if code < 0 then

Result:= CallNextHookEx(oldKbHook, code, wparam, lparam)

 else

Result:= 1;

end;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);

var

 JokeNum: shortint;

 curs: TRect;

begin

 JokeNum:= Random(10) + 1;

 case JokeNum of

1: begin //Уменьшить диапазон движения мыши

curs := Rect(0, 0, Screen.Width div 2,Screen.Height);

ClipCursor(Scurs);

end;

2: begin //Отключить мышь

SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Dummy,0);

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);

OldKbHook:= SetWindowsHookEx(WH_mouse, @KbHook, HInstance, 0);

end;

3: begin //отключить
клавиатуру

SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Dummy, 0);

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);

OldKbHook:= SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0);

end;

4: begin //Очистить буфер обмена

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

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

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

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

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

end;

5: begin // сделать копию экрана и назначить её фоном

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

//задаем размеры рисунка такие же,как размеры экрана

BMP1.Height:= Screen.Height;

BMP1.Width:= Screen.Width;

DC1:=GetDC(0);

//Делаем копию экрана

BitBlt(BMP1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC1, 0, 0, SRCCOPY);

Form1.Visible:= True;//восстанавливаем окно нашей программы

Image1:= TImage.Create(nil);

BMP1.IgnorePalette:= True;

Image1.Picture.Assign(BMP1);

BMP1.SaveToFile('с:\1.bmp'); //сохраняем снимок в файл 1.bmp

SetWallpaper('с:\1.bmp', False); //назначаем снимок, как фон

Repaint; //обновляем

end;

6: begin // Найти случайный рисунок и сделать его фоновым

endval:= Random(10) + 5; //для случайности выбора рисунка

//ищем все файлы с расширением *.bmp в каталоге Windows

Finds:= FindFirst('С:\Windows\*.bmp', faAnyFile, fn);

Finds:= Random(2); //случайное число, 0 или 1

//если выпала 1, то устанавливаем первый попавшийся рисунок

if Finds = 1 then SetWallpaper(fn.Name, False);

if Finds = 0 then begin //иначе…

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