сделать стартовой
  в избранное
  Гостивая
 
На главную
Обо мне, моих друзьях и т.д
 
Хочешь поболтать? Заходи!!!
Мой форум!
Напиши мне пару строк
 
Проги для системы, Windows, Tweaker'ы и тд
Проги для mp3, графики., кодеки
Всё остальное
 
Документы по настройке Windows, реестр и тд
Исходники, компоненты и тд для Delphi 6
Статьи по Хаку, Взлому
 
Скрипты на php
Шаблоны сайтов
Учебники по PHP
 
Здесь всё понятно!
Boot screen, logon'ы для Windows XP
Ссылки, самые нужные!

Rambler's Top100

Как отомстить "врагу" средствами Windows.pas

      Делу, как известно, время, но и потехе опять же час :). При чем тут модуль Windows? А кому захочется тащить на "вражеский" компьютер софтину в 400 КБ, которая только и может, что спрятать панель задач и иконки? Правильно, тому, кто не знает свойств консольного приложения. Но мы-то с вами тянемся к знаниям ;), так что сейчас создадим полноценную программу, чьи настройки можно будет редактировать, и она будет весить ровно в 40 раз меньше, чем описанная выше. Итак, создам консольную программу [File>New>Other>Console Application]. Только чур! - шутка будет безболезненной, а то можно и в нос схлопотать. Итак, наш исполняемый файл можно будет настраивать. Логичнее всего это сделать извне, т.е. из файла с конфигом, чтобы не светиться во "вражеской" системе MS-DOS'овским окошком консоли. Поэтому удалите строку "{$Apptype Console}" и в разделе Uses оставьте только модуль Windows. Теперь ненадолго сверните Delphi и с помощью Блокнота создайте в той же директории, что и наше приложение, текстовый файл следующего содержания:

0{скрыть Crl+Alt+Del}
1{менять системные цвета}
0{менять местами кнопки мыши}
1{показывать сообщение: "Windows must die!"}
1{выключиться после одного сеанса}

Назовите его, скажем, "Config.txt". Он состоит из пяти строк; каждая строка отвечает за "свою" функцию. 0 - не задействовать данную "опцию" во время работы программы, 1 - задействовать (false и true). Справа БЕЗ ПРОБЕЛА помещаются комментарии, чтобы мы не позабыли, какая строка за что отвечает. (Здесь показан пример настроек, где отключение Ctr+Alt+Del и смена кнопок мыши неактивны, а остальное работает.) Таким образом, нужно только связаться с данным файлом, перебрать каждую строку - с помощью цикла for…to, как вы уже догадались. Когда вся информация будет принята приложением, ее придется постоянно держать в памяти с помощью динамического массива. Я думаю, вам не нужно объяснять, что есть динамический массив, но, чтобы освежить свою и вашу память, напомню. Продекларируйте:

JokeType: Array[1..10] of Boolean;

Здесь содержится 10 значений, 10 различных переменных типа boolean, способных - вам известно - принимать только значения false или true. И данный-то массив помнит это значение персонально для каждого из своих десяти членов. (Я намеренно сделал их так много, чтобы побудить вас добавить в программу новые функции). Указав в квадратных скобках номер интересующей нас переменной, мы получаем для нее возвращаемое значение true/false, соответствующее ей. Прочее, думаю, понятно из листинга.

program Joke;
uses
Windows;
const
SysColorArray: array [0..13] of Integer = (COLOR_ACTIVEBORDER, COLOR_ACTIVECAPTION, COLOR_APPWORKSPACE, COLOR_BACKGROUND, COLOR_BTNFACE, COLOR_BTNTEXT, COLOR_CAPTIONTEXT, COLOR_INACTIVEBORDER, COLOR_INFOTEXT, COLOR_MENU, COLOR_MENUTEXT, COLOR_WINDOW, COLOR_WINDOWFRAME, COLOR_WINDOWTEXT);

ColorArray: array [0..12] of Integer = (16776960, 0, 16711680, 65535, 16711935, 32768, 8388608, 255, 12632256, 16777215, 15780518, 128, 32896);
//Цвета хранятся в модуле Graphics.pas,
//но мы не будем использовать его,
//а запишем цвета в цифровом виде.

var
F: TextFile; //наш файл с настройками
S: ShortString;
i: Smallint;
h: hwnd;
JokeType: Array[1..10] of Boolean; //наш массив
function CheckLine(Line: ShortString): Boolean;
var
n1,n2: Smallint;
begin
//удаляем из строки комментарии
Result:=false;
n1:=pos('{',Line);
n2:=pos('}',Line);
delete(Line, n1, n2);
if Line='1' then result:=true;
end;

begin
AssignFile(F, 'config.txt'); //соединяемся с файлом
Reset(F); //перемещаемся в начало файла
for i:=1 to 10 do begin //читаем все строки
ReadLn(F, s);
JokeType[i]:=CheckLine(S);
end;
CloseFile(f); //отсоединяемся
//начинаем шутить :)
Randomize;
if JokeType[1] then //отключаем Ctrl+Alt+Del
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
//запускаем бесконечный цикл:
while true do begin
Sleep(10000); //ждем 10 секунд
//меняем системные цвета:
if JokeType[2] then
SetSysColors(1, SysColorArray[random(13)], ColorArray[random(12)]);
//меняем кнопки мыши местами
if JokeType[3] then begin
SwapMouseButton(true);
Sleep(3000);
SwapMouseButton(false);
end;
if JokeType[4] then MessageBox(h,'Windows must die!','Error',0);
if JokeType[5] then Halt; //выключаемся
end;
end.

 

Вот и всё. Если что не удалось - пишите.

  || на главную || Обо мне || System || Media || Хумор || Для Винды || Гостевая || Ссылки ||

Хостинг от uCoz

Хостинг от uCoz