Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #77, МАЙ 2005 г.

Скрин-сэйвер «Нюхач»

Николай «GorluM» Андреев

Хакер, номер #077, стр. 077-112-2


/C – для редактирования настроек хранителя. Когда в свойствах экрана в закладке «Screen saver» ты жмешь «Setting» хранителю передается именно этот ключик. Ну и хрен с ним.

/A – самый ненужный нам ключик. Служит для открытия окошка с предложением ввести пароль. Если когда-нибудь захочешь запаролить заставку придется юзать его.

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

Ну что, теория, вроде бы, ясна как натуральный логарифм, поэтому пора приступить к разработке нашего хранителя кольца... тьфу, экрана.

[хранитель «Нюхач»]

Я долго размышлял, какую визуализацию сделать. Она должна быть приятной внешне, должна нести некоторую полезную информацию, а еще, она должна быть хакерской. Вот какие требования я выдвинул к графической части нашего хранителя. Надо признать, задачу себе я поставил не из легких. Думал в начале, пускай заставка какие-нибудь rss-блоги показывает и прокручивает. Но это не хакерская идея. Потом вспомнил о хакерских rss-блогах, но они, честно говоря, не очень информативны (обновляются редко). В процессе раздумий не один пакет персикового сока выпил. В итоге остановился я на локальном сниффере. Пусть наш скрин-сэйвер все пакеты из локалки собирает и на экран нам выводит. Для наглядности в разные цвета пакеты разных типов раскрашивает. Красиво и информативно! Вот, скажем, нет никакой деятельности на компе, а пакеты от тебя идут – можно так трояна засечь. Или, скажем, хочешь ты посмотреть, что в сети про тебя говорят плохого – запустил заставочку и читай - не хочу ;).

[кодим скрин-сэйвер]

Так как хранитель экрана – это самое обычное приложение, создавай в студии самый обычный проект «win32 application». В нем мы и будем дальше вершить судьбы мира… тьфу, программу писать.

Первое, что прога должна делать – это определять, в каком режиме она запущена. Для этого ей надо взять командную строку и посмотреть, что система ей там начирикала. Строку можно получить прямиком из параметров main-функции. К примеру, из третьего параметра WinMain или из массива, второго параметра обычного консольного main’а. В крайнем случае, можно воспользоваться функцией GetCommandLine.

Первый символ в строке при корректном запуске должен быть равен ‘/’. Второй, соответственно, будет содержать символ, определяющий режим запуска. В коде разбор командной строки выглядит следующим образом:

switch (*CharUpper(CharNext(commandline))) {

case 'C':

// настройки

MessageBox(0, "Хрен", "Настроек нету...", 0);

return 0;

case 'S':

// показать

break;

default:

// пасс или превью

return 0;

}

Если нас просят показать настройки, мы ругаемся с помощью MessageBox и выходим. Если просят запуститься в полноэкранном режиме – просто вылезаем из блока switch и продолжаем работать. Если еще чего-нибудь просят – пусть на return 0 идут.

По-хорошему, программе перед стартом надо создавать mutex, чтобы не допустить двух копий программы в памяти. Если ты заглянешь на диск, то убедишься – так у меня в проге и делается.

Назад на стр. 077-112-1  Содержание  Вперед на стр. 077-112-3