Delphiйские штучки

Автор: Андрей Кульхакерный (домашняя страница неизвестна)

Говорят, что скука - это чуть ли не болезнь. Дескать, если захандрил, заскучал перец, то все у него из рук будет валиться, все ему будет не так. Иные со скуки такие вещи вытворяют, что аж диву даешься. Нет, самых радикальных методов борьбы со скукой мы предлагать вам не будем.

Попробуем поднять настроения немного пошутив. Чуть-чуть. Глядишь настроение улучшиться, жизнь не такой серой покажется. К тому же весна кажется вроде уж начинается, без хорошего настроения никак. Как шутить будем? А просто. Поразвлекаем себя небольшими программками на Delphi.

И ежу понятно, что подшутить над ближним своим - святая обязанность. Вот мы и пошутим. Состряпаем прогу, которая будет вытворять на компе бедняжки всякие пакости - безобидные в основном. Так что не ленись, засучивай рукава, то бишь запуская Delphi. Сейчас мы что-нибудь замастырем.

Ну, чем бедного юзвера можно напугать? Конечно он существо и так замученное, а ну как не открывающимся и закрывающимся приводом CD-ROM-а его помучить. Сидит он, а привод - вжик! - и открылся, а потом - бац! - закрылся. Сказано - сделано. Тем более делов то, пара строчек кода:


mciSendString('Set cdaudio door open wait', nil, 0, handle);

Вернее даже одна строчка. Просто и со вкусом. Главное не забудь включить MMSystem в список используемых модулей.

Если надобно закрыть привод, то все аналогично:


mciSendString('Set cdaudio door closed wait', nil, 0, handle);

Кончено глупо просто так щелкать CD-ROM-ом, надо это дело как-то обставить, сообщение там какое выдать. Ну это уж твоя забота - знаем мы, человек ты с хорошим (хоть и извращенным) чувством юмора.

Далее. Почему бы не поменять ему еще обои на рабочем столе? Вот сидит он у себя на работе, делает её, а ты ему - бац! - и тетку голую на экран. Прикольно, да? Нет? Хм... Ну как знаешь. Но все же о том, как это сделать скажем. Вообще, способов есть много, причем довольно мудреных, но мы пойдем самой прямой и ровной дорогой. Для этого просто заставим Windows перечитать файл Win.ini с новым параметром обоев рабочего стола. Это возможно с помощью функции Windows API SystemParametersInfo, таким способом:


SystemParametersInfo(spi_SetDeskWallPaper,0,Addr(BmpFileName),spif_UpdateIniFile + spif_SendWinIniChange);

Поясняем, что BmpFileName - это имя файла с изображением. Параметр spif_UpdateIniFile, записывает изменения в Win.ini, а spif_SendWinIniChange посылает всем окнам сообщение о факте изменения Win.ini. И все.

Ну, так, голую тетку на рабочий стол выставили, с CD-ROM-омом побаловались. Юзверь уже дрожит от страха, ручки тянуться к клаве дабы нажать заветное трехкнопочное. А мы ему по ручкам, по ручкам. Спрячем от него CTRL-ALT-DEL. Текст проги приводим полностью, тем паче, что она очень и очень маленькая. Но весьма симпатишная.


program small;
uses

WinProcs;
{$R *.RES}

var
D : integer;

begin
Dummy := 0;
SystemParametersInfo( SPI_SETFASTTASKSWITCH, 1, @D, 0); // Вырубили ALT-TAB нафиг
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @D, 0); // CTRL-ALT-DEL туда же
end.


Вот-с. Что теперь осталось бедному и разнесчастному пользователю. Нажать на reset? Ну и тут мы его опередим, выключим винды без всякой его помощи. Вод код, работающий под Windows любой сборки:


uses Windows

procedure RebootSystem;
var

handle, ph: THandle;
pid: DWORD;
luid: TLargeInteger;
dummy, priv: TOKEN_PRIVILEGES;
ver: TOSVERSIONINFO;
begin

ver.dwOSVersionInfoSize := Sizeof(ver);
GetVersionEx(ver);
if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then begin
pid := GetCurrentProcessId;
ph := OpenProcess(PROCESS_ALL_ACCESS, false, pid);
if OpenProcessToken(ph, TOKEN_ADJUST_PRIVILEGES, handle) then
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then begin
priv.PrivilegeCount := 1;
priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
priv.Privileges[0].Luid := luid;
AdjustTokenPrivileges(handle, false, priv, 0, dummy, pid);
end;
end;
ExitWindowsEx(EWX_REBOOT, 0);
end;

Вот, пожалуй, и все на сегодня. Не шибко много, но зато вышеприведенные примеры позволят скрасить серые часы скуки. Да и пользователя всегда полезно попугать. Ведь напуганный пользователь, вреднее вируса. Народная мудрость, однако.



Опубликовал admin
10 Янв, Суббота 2004г.



Программирование для чайников.