|
*** |
Delphi And ПриколMargo Привет-привет, уважаемый читатель! Я смотрю, повеселиться любишь. Понимаю. Без приколов и не туды, и не сюды. Ладно, не все так печально, если у тебя имеется Delphi и немного мозгов, а еще фантазию не забудь. Я вот чего надумал: содрать рабочий стол в bmp-файл, через реестр сделать этот файл обоями для железного друга, там же (в реестре) заблокировать доступ к свойствам экрана и убрать все значки с рабочего стола. Прикинь, как твои друзья (подруги) будут по крысе тыркать пальцами, сделав при этом изумленный вид, мол, Windows поломался. Ладно, давай за дело. Запускай Delphi. Извратись на форме, сделав нечто похожее на это: Тут два BitBtn (Страница Additional). Давай сделаем как взрослые дядьки. Свойство Caption как изменить у компонентов ты уже умеешь, а на что — догадался. Свойство Name у Form1 измени на fmMain, у BitBtn1 — на bbStart, у BitBtn2 — на bbFinish. Вообще, давать имена следует со смыслом. И еще, имеется негласное правило, которое гласит (немасленое масло), что имена должны начинаться с двухбуквенного префикса (означающего тип компонента или его свойства). Ну, к примеру, bb — от BitBtn. Ладно, проехали. Создай обработчик OnClick для bbStart и вставь туда все, что сочтешь нужным из следующего листинга: procedure TfmMain.bbStartClick (Sender: TObject); Здесь у меня три объекта: Canvas, Bitmap, Reg и две переменные: ScreenDC:Hdc, s:string. Сначала я получаю контекст окна при помощи процедуры GetDC. В скобках у меня номер окна, у которого я получаю контекст. Если 0, то это экран. Потом я создаю канву (холст), на которой можно рисовать (Canvas:=TCanvas.Create;) и объект для работы с растровой графикой (Bitmap:=TBitmap.Create;). Далее я устанавливаю размеры у Bitmap, а т.к. мы хотим содрать Desktop, то и размеры соответствующие (как у экрана). Необходимо связать канву и контекст экрана, для этого я дескриптор (мол, указатель, т.е. Canvas, указывает на экран, и можно работать прямо с экраном: рисовать, копировать содержимое и т.д.) у канвы устанавливаю на ScreenDC. procedure CopyRect(Dest:TRect, Canvas:TCanvas, Source:TRect) — копирует изображение Source канвы Canvas в участок Dest текущей канвы (у нас Bitmap.Canvas). Ты, наверное, не знаешь, что за тип TRect. Это поправимо. TRect — составной тип, у которого четыре поля для хранения координат прямоугольной области.
TRect = record После всего этого колдовства предлагаю сохранить изображение с канвы у Bitmap в файл (Fon1.bmp). В следующих трех строках я освобождаю ресурсы (память), которые занимал своими переменными (объектами). Забыл тебе сказать, что я прячу окно программы на время копирования экрана. Так, изображение у нас есть, теперь давай поработаем с реестром. В Delphi есть объект класса TRegistry спецом для работы с системным реестром окошек. Чтобы нам заюзать этот объект, необходимо его создать, что я и делаю. property RootKey:HKEY — содержит имя корневого ключа. function OpenKey(const Key:String; CanCreate:Boolean):boolean — открывает существующий или создает и открывает новый ключ с именем Key и возвращает True, если все OK. CanCreate — разрешает/запрещает создание ключа при его отсутствии. procedure WriteXXXX(const Name:String; Value:XXXX) — записывает в параметр с именем Name данные типа XXXX. NoDesktop:DWORD — разрешает/запрещает отображение десктопа, а нам это и надо (убрать иконки). NoDispCpl:DWORD — разрешает/запрещает доступ к свойствам экрана (чтобы жертва не могла поменять обои). При помощи процедуры GetCurrentDir я получаю путь к каталогу, с которым работает моя прога (по дефолту — каталог, в котором прога находится). Прибавляю имя графического файла (Fon1.bmp) и пишу в реестре его полный путь как wallpaper. Все! Теперь заканчиваю работу с реестром и освобождаю ресурсы. Здесь приведен обработчик OnClick для второй пимпы. Я думаю, что тебе будет все понятно, если ты внимательно читал статью.
procedure TfmMain.bbFinishClick (Sender: TObject); Можешь компилить, только добавь registry в Uses. Этот модуль необходим для юзания TRegistry (согласись, не в каждой проге используешь реестр).
Uses Теперь запускай эту прогу на компьютере жертвы. Кстати, тачку нужно перезагрузить, чтобы Windows загрузился с новыми параметрами! Только не заплюй экран от смеха! За сегодня ты научился работать с реестром, что очень необходимо для Win-кодинга. Можешь написать Windows-настраивалку — конечно, если знаешь секреты реестра. Источник: http://www.nestor.minsk.by/kg
|
|
Copyright © "Internet Zone", info@izcity.com |