1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176:
| unit strmdem;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, NMStrm, ExtDlgs, StdCtrls, Psock, ExtCtrls, ComCtrls, ScktComp;
type TForm1 = class(TForm) Panel1: TPanel; Image1: TImage; Button1: TButton; NMStrm1: TNMStrm; Edit1: TEdit; Label1: TLabel; Edit2: TEdit; Label2: TLabel; StatusBar1: TStatusBar; Timer1: TTimer; ServerSocket1: TServerSocket; procedure Button1Click(Sender: TObject); procedure NMStrmServ1MSG(Sender: TComponent; const sFrom: String; strm: TStream); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure NMStrm1Connect(Sender: TObject); procedure NMStrm1Disconnect(Sender: TObject); procedure NMStrm1HostResolved(Sender: TComponent); procedure NMStrm1Status(Sender: TComponent; Status: String); procedure NMStrm1PacketSent(Sender: TObject); procedure NMStrm1InvalidHost(var handled: Boolean); procedure NMStrm1ConnectionFailed(Sender: TObject); procedure NMStrmServ1Status(Sender: TComponent; Status: String); procedure Timer1Timer(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM} function GetScreenShot: TBitmap; var Desktop: HDC; begin Result := TBitmap.Create; Desktop := GetDC(0); try try Result.PixelFormat := pf32bit; Result.Width := Screen.Width; Result.Height := Screen.Height; BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, 0, 0, SRCCOPY); Result.Modified := True; finally ReleaseDC(0, Desktop); end; except Result.Free; Result := nil; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=True; end;
procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String; strm: TStream); var MyFStream: TFileStream; begin If FileExists('c:\anna.bmp') then DeleteFile('c:\anna.bmp'); MyFStream := TFileStream.Create('c:\anna.bmp', fmcreate); try MyFStream.CopyFrom(strm, strm.size); finally MYFStream.Free; end; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin If FileExists('c:\anna.bmp') then DeleteFile('c:\anna.bmp'); end;
procedure TForm1.NMStrm1Connect(Sender: TObject); begin StatusBar1.SimpleText := 'Connected'; end;
procedure TForm1.NMStrm1Disconnect(Sender: TObject); begin If StatusBar1 <> nil then StatusBar1.SimpleText := 'Disconnected'; end;
procedure TForm1.NMStrm1HostResolved(Sender: TComponent); begin StatusBar1.SimpleText := 'Host Resolved'; end;
procedure TForm1.NMStrm1Status(Sender: TComponent; Status: String); begin If StatusBar1 <> nil then StatusBar1.SimpleText := status; end;
procedure TForm1.NMStrm1PacketSent(Sender: TObject); begin StatusBar1.SimpleText := IntToStr(NMStrm1.BytesSent)+' of '+IntToStr(NMStrm1.BytesTotal)+' sent'; end;
procedure TForm1.NMStrm1InvalidHost(var handled: Boolean); var TmpStr: String; begin If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then Begin NMStrm1.Host := TmpStr; Handled := TRUE; End; end;
procedure TForm1.NMStrm1ConnectionFailed(Sender: TObject); begin ShowMessage('Connection Failed'); end;
procedure TForm1.NMStrmServ1Status(Sender: TComponent; Status: String); begin If StatusBar1 <> nil then StatusBar1.SimpleText := status; end;
procedure TForm1.Timer1Timer(Sender: TObject); var MyFStream: TFileStream; begin DeleteFile('c:\anna.bmp'); Image1.Picture.Bitmap := GetScreenShot; Image1.Picture.SaveToFile('c:\anna.bmp');
NMStrm1.Host := Edit2.Text; NMStrm1.FromName := Edit1.Text; MyFStream := TFileStream.Create('c:\anna.bmp',fmopenreadwrite); try NMStrm1.PostIt(MyFStream); finally MyFStream.Free; end;
NMStrm1.Disconnect; end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin s := Socket.ReceiveText; if s = 'start' then Button1.Click; end;
end. |