Я расскажу как подшутить над своим боссом, как заставить мышь летать по экрану и тыкать куда попало, научу как устроить полный кавардак на рабочем столе.
Читайте, если не хотите пропустить веселье!
Самый простой прико! Комп не выключается.
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;