Ãœðù - Xakep Online
Ãœðù - Xakep Online
Ãœðù - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
coding<br />
Несколько слов о формате PNG<br />
В 1978 году израильские исследователи<br />
Яков Зив (Jacob Ziv) и Абрам<br />
Лемпел (Abraham Lempel) изобрели<br />
новый алгоритм компрессии данных<br />
без потерь, названный LZ78. Публикация<br />
алгоритма была открытой, любой<br />
человек мог взять и использовать его<br />
для своих целей, и в 1987 году сотрудник<br />
компании CompuServe Боб Берри<br />
(Bob Berry) разработал на основе LZW<br />
новый формат хранения изображений<br />
— Graphic Interchange Format (GIF). В<br />
декабре 1994 года было объявлено, что<br />
за использование алгоритма LZ78 нужно<br />
выплачивать лицензионные отчисления<br />
разработчикам. Таким образом, использование<br />
формата GIF стало платным.<br />
После этого была создана рабочая<br />
группа под руководством Томаса Боутела<br />
(Thomas Boutell), которая решала задачу<br />
по разработке альтернативы GIF. Новый<br />
формат получил название PNG (Portable<br />
Network Graphics).<br />
Активизация сервера<br />
IdTCPServer1.Bindings.Add;<br />
IdTCPServer1.Bindings.Items[0].<br />
IP:=IPadress.Text;<br />
IdTCPServer1.Bindings.Items[0].Port:=StrToI<br />
nt(PortNumber.Text);<br />
IdTCPServer1.Active:=true;<br />
рисунке. Во время обращения к серверу каждый<br />
клиент создает свой собственный поток.<br />
Информация о нем содержится в переменной<br />
AThread, из которой мы читаем присланную<br />
команду с помощью функции ReadLn. Далее с<br />
помощью функции SameText мы осуществляем<br />
проверку того, является ли присланная команда<br />
разрешенной. Затем создаем поток и через<br />
Сервер удаленного администрирования<br />
в действии<br />
него передаем файл клиенту, после чего рвем<br />
соединение, так как запрошенное действие<br />
выполнено.<br />
Проектируем и пишем клиентскую часть<br />
Я уже чувствую нетерпение, с которым ты<br />
хочешь приступить к тестированию разработанной<br />
тобой утилиты. Конечно, хочется<br />
расслабиться, откинувшись на спинку кресла<br />
(копирайт на эту фразу по-прежнему находится<br />
у инсталлятора Windows 98) и, никуда не бегая,<br />
решать (или создавать) все проблемы пользователей<br />
удаленно. Вот и отлично! Нам остался<br />
последний рывок — разработка клиентской<br />
части.<br />
Создай новое приложения, не забыв при этом<br />
сохранить старое. Размести на форме следующие<br />
компоненты:<br />
• TIdTCPClient (закладка Indy Servers) — с помощью<br />
него ты будешь соединяться с сервером<br />
и посылать ему команды;<br />
• TGroupBox и в нем — два TEdit — в TEdit'ы<br />
ты в дальнейшем введешь IP-адрес сервера<br />
и номер порта, по которому будет происходить<br />
соединение;<br />
• четыре TButton с текстом «Скриншот»,<br />
«Просмотр», «Управление», «Сообщение 'ПОРА<br />
РАБОТАТЬ!'», назови кнопки B_GetScr, B_Watch,<br />
B_Control, B_Message соответственно.<br />
• TCheckBox с текстом «Полноэкранный<br />
режим»;<br />
• два TTimer — один будет использоваться<br />
Внешний вид формы<br />
для работы в режиме просмотра удаленного<br />
рабочего стола, а второй — для работы в режиме<br />
управления; у обоих компонентов свойство<br />
Enabled установи в False, а свойство Interval<br />
сделай равным 400 — это частота обновления<br />
картинки экрана сервера и посылки серверу<br />
команд, заданная в миллисекундах;<br />
• TImage — в нем будет отображаться картинка с<br />
удаленного рабочего стола.<br />
Приступаем к работе. Для кнопки «Скриншот»<br />
создай следующий обработчик:<br />
procedure TForm1.B_<br />
GetScrClick(Sender: TObject);<br />
var<br />
s:TFileStream;<br />
Bitmap: TBitmap;<br />
PNG: TPNGObject;<br />
begin<br />
//Подключаемся к серверу<br />
connect_to_server;<br />
//Посылаем серверу команду<br />
«get_screen»<br />
IdTCPClient1.WriteLn('get_<br />
screen ');<br />
with IdTCPClient1 do<br />
begin<br />
if FileExists('C:\s.png') then<br />
DeleteFile('C:\s.png');<br />
//Создаем поток<br />
s := TFileStream.Create('C:\<br />
«Принцип работы этой программы может<br />
быть положен в основу сервисовскриншутеров,<br />
призванных начальством<br />
следить за своими сотрудниками.<br />
Стоимость таких программ достигает<br />
сотен долларов»<br />
/ 122<br />
xàêåð 05 /101/ 07