Delphi. Учимся на примерах - [30]

Шрифт
Интервал

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

> 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 //иначе…

>>    for i:=1 to endval do begin

>>     Finds:= FindNext(fn); // …ищем другие рисунки

>>     //выбираем любой другой рисунок и делаем его фоновым

>>     if i = endval – 3 then SetWallpaper(fn.Name, False);

>>    end;

>>   end;

>>   FindClose(fn); //завершаем поиск

>  end;

>  7: begin //Выключить монитор

>   SendMessage(Application.Handle, WM_SYSCOMMAND, >SC_MONITORPOWER, 1);

>  end;

>  8: begin //Сообщение об "ошибке"

>>   for i:=1 to 200 do begin

>>    case i of

>>    //после каждого 25-го числа – перенос на новую строку

>>    25,50,75,100,125,150,175,199: err_str:= err_str + #13#10;

>>    end;

>>    //текст "ошибки"

>>    err_str:= err_str + IntToStr(Random(99999));

>>   end;

>>   MessageDlg(errstr, mtError, [mbOk], 0); //выводим сообщение

>  end;

>  9: begin //Запуск Internet Explorer

>>   for i:=1 to Random(10)+ 5 do //случайное число от 5 до 15.

>>    ShellExecute(0, 'open', 'C:\Program Files\lnternet Explorer\' +

>>     'IEXPLORE.EXE', 'www.heel.nm.ru', 0, SW_MAXIMIZE);

>  end;

> 10: begin //Перевести время

>>   GetLocalTime(tm); //узнаем текущую дату и время

>>   tm.wYear:= 2000; //устанавливаем год

>>   tm.wMonth:= 01; //месяц

>>   tm.wDay:= 01; //день

>>   tm.wHour:= 0; //часы

>>   tm.wMinute:= 0; //минуты

>>   tm.wSecond := 1; //секунды

>>   tm.wMilliseconds := 0; //мс

>>   SetLocalTime(tm); //устанавливаем новую дату и время

>  end;

> end;

>end;


>procedure TForm1.FormPaint(Sender: TObject);

>begin

> Form1.Hide; //прячем форму

>end;


>procedure TForm1.FormCreate(Sender: TObject);

>var

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

> path: string;//содержит путь к нашей программе

>begin

> Randomize; //генератор случайных чисел

> //узнаем путь к программе и ее имя

> path:= Application.EXEname;

> reg:= TRegistry.Create;//открываем реестр

> //ветка текущего пользователя


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.