Скрин-сэйвер «Нюхач» Николай «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, чтобы не допустить двух копий программы в памяти. Если ты заглянешь на диск, то убедишься – так у меня в проге и делается. |