Практическое руководство по компьютерным приколам 10

Данный юбилейный выпуск посвящается Шваяковой Елене Александровне

Юбилей. По-другому и язык не поворачивается назвать эту десятую статью из серии "Практическое руководство по компьютерным приколам". За время выхода серии было описано около 50 (!) шуток и розыгрышей, которые можно совершить над знакомыми с помощью среды разработки приложений Borland Delphi. Добрая тысяча писем свалилась в мой многострадальный ящик с различными предложениями, советами, идеями, посланиями и посыланиями:). И сегодня, подводя некоторые итоги, я бы хотел отойти от голого кода и ответить на некоторые письма, повторяющиеся с завидной стабильностью, дабы упростить диалог с читателем и избежать написания одних и тех же ответов на одни и те же вопросы каждый день. Я даже поделил письма на некоторые категории, которые спешу предложить вашему вниманию. Имена авторов и их e-mail, естественно, разглашению подлежать не будут. Орфография писем сохранена (поэтому читабильность у многих из них просто никакая:)).

1. Веселые (ответы на письма были под стать вопросам)
Здесь я решил выложить письма, которые повторялись в той или иной интерпретации много раз и очень скоро будут попросту игнорироваться. Но, тем не менее, у знающих людей они несомненно вызовут улыбку, а значит, вполне подходят нашей статье.

Q: Здраствуйте. У вас интиресные примеры приколов. Есть к вам вапрос. У меня в принтере катридж засарился и он паэтому не печатает. Принтер Epson. Можно его как нибудь прачистить?
A: Конечно, можно. Тебе нужно поискать на сайте Epson'а специальную библиотеку для Borland Delphi 6 под твой принтер и подключить ее в раздел Uses программы на Delphi. Затем можно использовать следующие команды:
Epson1.Print — печать.
Epson1.Stop — остановка печати.
Epson1.PowerOn — включить принтер в розетку.
Epson1.PowerOff — выключить принтер из розетки.
Epson1.ClearAll — прочищает картридж, вытирает его от пыли и моет влажной тряпочкой.
Epson1.GetCartridge — выбросить картридж из принтера.
Epson1.InsertCartridge — всос в принтер самого близкого к нему картриджа.
Epson1.Name — печать на принтере фразы "Тут был Паша".

Мораль: Задавайте, пожалуйста, вопросы по теме. Желательно по теме статей. Потому что отвечать на вопросы типа "Как работать с базами данных в HTML" и "У меня винчестер не работает. Может, это из-за монитора?" довольно весело, но шансы получить ответы на подобные вопросы у вас ничтожны. Либо, если уж спрашиваете на отвлеченные темы, не указывайте в теме письма "практическое руководство по компьютерным приколам" и детально описывайте проблему. Ниже приведены мои любимые вопросы подобного рода:
— Почему у меня Turbo Pascal не компилирует ваш код и где в нем найти Timer?
— А почему антивирус не определяет ваши приколы, как вирусы? Они же вредные!
— А пришлите мне эти приколы, написанные на Visual Basic. Я просто ничего другого не знаю.
— А я себе апгрейд сделал до Athlon XP 2500. Он потянет Delphi ?
— А присылайте мне ваши другие приколы и эти. А то лень газету покупать.
— А вы можете прислать мне на e-mail пакет Delphi?

Q: А напишите прикол, чтобы диск форматировался. Или Windows полностью дохла. Вот веселуха будет.
A: Ну, это так просто, что ты можешь сделать это самостоятельно. Тебе нужно всего лишь скачать из Интернета или найти MSDN (4,5 Гб), установить его и посмотреть в нем описания функций FormatDrive() и KillWindows(). Это функции, встроенные в саму систему программистами Microsoft, поэтому, если ты не найдешь их, обязательно напиши письмо в службу поддержки Microsoft Windows и возмутись, почему они не удосужились описать в MSDN'е такие нужные и полезные функции. Если же эти лентяи не соизволят ответить на такое искреннее гневное послание, пусть тебя успокаивает сам факт того, что на вопрос, есть ли у тебя MSDN, ты с гордостью можешь сказать: "Конечно, есть. Только он глючный и неполный. Но после моего письма программисты Microsoft над этим работают":).
Мораль: Так и хочется сказать словами Крылова: "Уж сколько раз твердили миру..." Не буду я описывать программ деструктивного характера, потому что это уже никак не тянет на безобидные приколы. Поэтому те, кто ждет от статьи к статье, когда же будет описан код для убивания BIOS'а, форматирования винчестера и разрыва диска в CD-ROM'е (предлагали и такое:)), могут расслабиться, попить чайку и не мучить меня в дальнейшем с подобными письмами.

Q: Привет. А напиши в газете прикол, чтобы у меня на рабочем столе жил челавек, с которым можно играть в карты и шахматы, а еще его нужно кармить и одевать. И чтобы он со мной разговаривал. Спасибо заранее.
A: Ну что ты, зачем мучиться и переписывать такой огромный кусок кода из газеты. Поищи на сайте Microsoft'а какую-нибудь готовую зверюшку в этом роде. Никогда не поверю, что у них такой нету. Наверняка по твоему рабочему столу сразу начнет бегать веселый дяденька в очках с большой книгой "Linux Mustdie" (наверное, это про две операционные системы, просто запятую поставить забыли:)) в руках. Он будет каждые 5 минут рассказывать тебе, какой же ты счастливчик оттого, что выбрал Windows XP, каждые 15 минут будет гадить в корзину, сокращая объем свободного места на твоем системном диске на 50 Мб за один раз, и каждые 30 минут будет деинсталлировать все программы, в которых нет слова "Microsoft". К сожалению, существо живет не дольше месяца, и, умирая, прихватывает за собой всю систему. Убить его без убивания системы невозможно, ну, а про killwindows() я уже писал выше:).
Мораль: Я очень ценю все идеи и предложения, которые присылают мне читатели, но оценивайте, пожалуйста, реальный объем работы, который придется затратить на реализацию вашего прикола, и количество страниц в газете (точнее, количество целых газет), которые займет код этой шутки. Я ни капли не сомневаюсь, что страшный монстр, разрывающий лапами DeskTop и ревущий, как реактивный истребитель, произведет должный эффект на пользователя, но я хотя бы реально оцениваю, что этот монстр, нарисованный лично мною, ничего, кроме смеха и сочувствия, вызвать не сможет:).

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

Q: Как скрыть программу от Ctrl+Alt+Del в XP или 98?
A: Для Windows 98:
Системные клавишесочетания блокируются при работе системы в режиме "экранная заставка", который, в свою очередь, можно включить и выключить следующим способом:
// Включение режима
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
// Выключение режима
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
Эти сочетания блокируют Ctrl+Alt+Del, Alt+Tab и т.д. А вот если нужно именно скрыть программу из списка процессов, а не заблокировать сами клавиши, то попробуйте этот код:
function RegisterServiceProcess (dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
implementation
procedure TForm1.Button1Click (Sender: TObject);
begin //Спрятать
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);
end;
procedure TForm1.Button2Click (Sender: TObject);
begin //Показать
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;
Вот теперь в 98 можно вовсю насладиться своими деяниями в режиме почти полной невидимости. Почти — потому что сторонний диспетчер задач (TaskInfo, например) легко найдет и выгрузит вашу программу.

Для Windows 2000/XP:
Давайте остановимся на варианте о том, что это невозможно. Я говорю давайте остановимся, потому что прикол, который можно скрыть от диспетчера задач в XP — это уже не шутки, и поэтому информацию по этому поводу найти не так легко даже на просторах Интернета. К тому же, объем кода, необходимый на сокрытие процессов зачастую больше объема кода на сам прикол. Да и программисты мелкомягких не зря свои деньги получают, поэтому их диспетчер задач поистине всевидящий. Но это только они так думают, ведь если немного покопать в сторону функции NtQuerySystem Information... если почитать умные книги о процессах, потоках, snapshot'ах, то как знать, возможно, и Microsoft останется не у дел. Думаю, что на эту тему подсказок достаточно:).

Q: Скажите, как прописаться в реестре на автозагрузку?
A: Самый популярный вопрос. Вопрос тех, кто не читал серию сначала, поэтому для них этот кусок кода:
procedure TForm1.FormCreate(Sender: TObject);
var
reg: TRegistry;
begin
Application.ShowMainForm:=false;
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false);
reg.WriteString('mscv32', Application. ExeName);
reg.CloseKey;
reg.free;
end;
Все, что остается сделать — добавить в раздел Uses модуль Registry. Все. Теперь в автозагрузке будет прописана ваша программа.

Q: А как убить программу после прикола, чтобы ее не нашли в процессах?
A: Еще один простой вопрос, но тоже весьма часто встречается в ящике. Просто после нужных действий пишем:
Form1.Close;
или
Application.Terminate;

3. Серьезные
Сюда я с удовольствием помещаю письмо читателя, которое в полной мере отражает всю суть серии статей по компьютерным розыгрышам:

Q: Здравствуйте. Ваши статьи — прекрасное руководство по интеграции Delphi и WinApi. Я довольно быстро смог освоить WinAPI и теперь использую эту технологию успешно практически в любой среде. И я хочу сказать спасибо, что вы решили учить читателей программированию именно на компьютерных приколах. Одно только название статьи позволяет забыть о том, что ты читаешь самый настоящий и довольно серьезный учебник по программированию.
A: Моя практика давно показала, что нет ничего бесполезнее и скучнее, чем программа, которую писать "нужно", а "не хочется". Именно поэтому все примеры кода здесь имеют вполне определенное практическое применение — вызывать улыбку на лице читателя.

На этом я хотел бы закончить. Не волнуйтесь, не всю серию. Слишком много идей и советов еще нужно воплотить в жизнь. Пишите ваши письма с идеями и предложениями. Надеюсь, эта статья оградит меня впредь от повторяющихся вопросов:). До новых встреч, и помните: данный цикл не только способствует укреплению ваших знаний о программировании, но также развивает ваши спортивные качества за счет постоянных занятий бегом с препятствиями от объекта наших скромных и веселых розыгрышей:).

Паша Либер aka Fireangel, Fireangel@tut.by


Компьютерная газета. Статья была опубликована в номере 07 за 2005 год в рубрике программирование :: разное

©1997-2024 Компьютерная газета