ЖУРНАЛ ХАКЕР

Супервозможности Delphi. Работа с API функциями Windows

Xakep, номер #035, стр. 035-069-1


Horrific (smirnandr@mail.ru) www.cydsoft.com/vr-online/

Константин Артемьев (barso2001@mail.ru)

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

Очень многие считают, что визуальность очень плохо влияет на результирующий код. Я ничего не могу сказать против. Очень часто оно так и есть, но не в случае с Delphi. Сегодня мы напишем прогу, которую нельзя увидеть по Ctrl+Alt+Del, воспользуемся встроенным ассемблером, обратимся к WinAPI, ну и, как всегда, поприкалываемся. А самое главное, что скомпилированный файл будет занимать всего 8192 байта!!! Не веришь? Да, все защитники языков низкого уровня утверждают, что в Delphi это невозможно. Сегодня тебе предстоит убедиться в обратном.

Сейчас я расскажу о том, как написать прогу, меняющую заголовки всех окон на надпись "Я за тобой наблюдаю". На рисунке 1 показано окно Delphi под влиянием нашего сегодняшнего примера.

Сегодняшняя прога будет использовать Win API (Windows Application Program Interface) - интерфейс прикладных программ для кодера. Попросту говоря, это функции и константы, которыми оперирует сам Windows. Рядовой Delphi-кодер всего этого может и не знать, так как у нас есть VCL (честь ему и хвала). VCL - это надстройка над WinAPI. Можно сказать больше - это инструменты, которые позволяют упростить кодинг и скрыть все сложности этого нелегкого труда.

В С++ тоже есть нечто подобное - MFC. Так что эта часть населения не сильно обделена, хотя MFC более сложная, абсолютно не визуальная, и выигрыш от ее использования в 10 раз меньше, чем от VCL.

Надстройка - это хорошо, но она дает удобный доступ только к части возможностей Windows. Эта часть, наиболее часто используемая при кодинге. И все же иногда приходится использовать то, что в VCL недоступно. В этих случаях нужно прямое обращения к API функциям Windows.

НА СТАРТ!!!

Запусти Delphi. Если он у тебя уже запущен, то создай новый проект. Как всегда, перед тобой появится пустая форма. Она нам сегодня не понадобится, поэтому удалим ее. Для этого из меню "Project" выбери пункт меню "Remove from Project...". Перед тобой появится окно, в котором ты должен выделить имя формы и нажать "ОК".

Теперь нужно войти в исходник самого проекта. Для этого выбери из меню "Project" пункт "View Source". Здесь можно удалять все, кроме строки:

program Project1;

Напиши там все, что написано в листинге 1. Все, наша прога готова. Теперь можно создать запускной файл (нажми Ctrl+F9 или выбери из меню "Project" пункт "Compile") или даже запустить прогу.

Я НЕ ТОРМОЗ, Я МЕДЛЕННЫЙ ГАЗ!!!

Для того, чтобы ты не выглядел тупорылой коровой, давай разберем по клавишам сегодняшний пример. О тормозе и о тупой корове - это я о себе. Если кто подумал это на свой счет, то это зря.

Всегда желательно знать, что ты делаешь, а не безмозгло повторять за другими. Тем более, что тут много всего интересного.

Содержание  Вперед на стр. 035-069-2

Copyright Gameland Publishing 1999-2000 ©