Я расскажу как подшутить над своим боссом, как заставить мышь летать по экрану и тыкать куда попало, научу как устроить полный кавардак на рабочем столе.
Читайте, если не хотите пропустить веселье!
Самый простой прико! Комп не выключается.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=false; // окно не закрывается
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
// прячем от глаз пользователя
ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);
end;Поясняю: при выключении крмпа, винда шлет всем окнам сообщение, что пора закрываться, а наша программа не хочет этого делать и игнорирунт сообщения винды и комп не выключается.
Винда внутри окна!
Просто до нельзя!
function EnumWindowsProc(h: hwnd; lparam: Integer): BOOL; stdcall;
begin
if IsWindowVisible(h) then
SetParent(h, Form1.Handle);
Result := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc, 0);
end;Поясняю: функция EnumWindowsProc перебирает все активные и устанавливает для них родительским окном наше окно.
Примечание: Рабочий стол, кнопка пуск, мышь... - это тоже окна!
Кавардак на Рабочем столе!
Окна, то будут сворачиваться, то разворачиваться, все будет мельтешить...
function EnumWindowsProc(h: hwnd; lparam: Integer): BOOL; stdcall;
begin
if IsWindowVisible(h) then
if random(10) = 4 then
SetForegroundWindow(h)
else
if random(10) = 4 then
ShowWindow(h, SW_MINIMIZE)
else
if random(10) = 4 then
ShowWindow(h, SW_MAXIMIZE);
Result := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
repeat
EnumWindows(@EnumWindowsProc, 0);
until 2=3;
end;Поясняю: функция EnumWindowsProc перебирает все активные и посылает случайным образом сообщения окнам.
Тыкнуть мышью, куда захочу!
var
pPoint: TPoint;
hPointWnd: HWnd;
begin
pPoint.X := 15;
pPoint.Y := Screen.Height-20;
SetCursorPos(pPoint.X, pPoint.Y);
hPointWnd := WindowFromPoint(pPoint);
SendMessage(hPointWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(1, 1));
SendMessage(hPointWnd, WM_LBUTTONUP, 0, MAKELONG(0, 0));
end;Совет: вставьте этот код в таймер с интервалом 1! Прикольно получится.
Блокируем запуск наскольких копий вашей программы!
procedure TForm1.FormCreate(Sender: TObject);
var
wnd : hwnd;
buff : array[0.. 127] of char;
begin
wnd := getwindow(handle, gw_hwndfirst);
while wnd <> 0 do
begin
if (wnd <> application.handle) and (getwindow(wnd, gw_owner) = 0)then
begin
getwindowtext (wnd, buff, sizeof (buff ));
if strpas (buff) = application.title then
begin
messagedlg('Приложение уже запущено!', mtwarning, [mbok], 0);
halt;
end;
end;
wnd := getwindow (wnd, gw_hwndnext);
end;
end;