我用的TNMUDP,
客户端:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var CCode:array[0..3]of char; TmpStream : TMemoryStream;
SendSize : integer;
begin
NMUDP1.ReadBuffer(CCode,NumberBytes);
if CCode[0]='s' then
begin
TmpStream:=TMemoryStream.Create;
try
if BmpStream.Size=0 then
begin
BmpStream.Clear;
ScreenCap;
end;
if LeftSize>BufSize then SendSize:=BufSize else SendSize:=LeftSize;
//BmpStream.ReadBuffer(TmpStream,SendSize);
TmpStream.CopyFrom(BmpStream,SendSize);
LeftSize:=LeftSize-SendSize;
if LeftSize=0 then BmpStream.Clear;
NMUDP1.RemoteHost:=FromIP;
NMUDP1.SendStream(TmpStream);
finally
TmpStream.Free;
end;
end;
end;服务器:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var ReqCode : array[0..3] of char; Bit:TBitmap;
jpe: TJPEGImage;
begin
ReqCode:='show';
NMUDP1.ReadStream(TmpStream);
RsltStream.CopyFrom(Tmpstream,NumberBytes);
if NumberBytes<BufSize then
begin
RsltStream.Position:=0;
if flag='form1' then
begin
jpe:=TJPEGImage.Create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
//Image1.Picture.Bitmap.LoadFromStream(RsltStream);
Image1.Picture.Bitmap:=Bit;
finally
jpe.Free;
Bit.Free;
end;
end else
if flag='form2' then
begin
jpe:=TJPEGImage.create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
StretchBlt(form2.Canvas.Handle,0,0,screen.Width,screen.Height,
Bit.Canvas.Handle,0,0,600,450,srccopy);
form2.Show;
finally
Bit.Free;
jpe.free;
end;
end;
TmpStream.Clear;
RsltStream.Clear;
end else
begin
TmpStream.Clear;
NMUDP1.RemoteHost:=edit1.Text;
NMUDP1.SendBuffer(ReqCode,4);
end;
end;
客户端:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var CCode:array[0..3]of char; TmpStream : TMemoryStream;
SendSize : integer;
begin
NMUDP1.ReadBuffer(CCode,NumberBytes);
if CCode[0]='s' then
begin
TmpStream:=TMemoryStream.Create;
try
if BmpStream.Size=0 then
begin
BmpStream.Clear;
ScreenCap;
end;
if LeftSize>BufSize then SendSize:=BufSize else SendSize:=LeftSize;
//BmpStream.ReadBuffer(TmpStream,SendSize);
TmpStream.CopyFrom(BmpStream,SendSize);
LeftSize:=LeftSize-SendSize;
if LeftSize=0 then BmpStream.Clear;
NMUDP1.RemoteHost:=FromIP;
NMUDP1.SendStream(TmpStream);
finally
TmpStream.Free;
end;
end;
end;服务器:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var ReqCode : array[0..3] of char; Bit:TBitmap;
jpe: TJPEGImage;
begin
ReqCode:='show';
NMUDP1.ReadStream(TmpStream);
RsltStream.CopyFrom(Tmpstream,NumberBytes);
if NumberBytes<BufSize then
begin
RsltStream.Position:=0;
if flag='form1' then
begin
jpe:=TJPEGImage.Create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
//Image1.Picture.Bitmap.LoadFromStream(RsltStream);
Image1.Picture.Bitmap:=Bit;
finally
jpe.Free;
Bit.Free;
end;
end else
if flag='form2' then
begin
jpe:=TJPEGImage.create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
StretchBlt(form2.Canvas.Handle,0,0,screen.Width,screen.Height,
Bit.Canvas.Handle,0,0,600,450,srccopy);
form2.Show;
finally
Bit.Free;
jpe.free;
end;
end;
TmpStream.Clear;
RsltStream.Clear;
end else
begin
TmpStream.Clear;
NMUDP1.RemoteHost:=edit1.Text;
NMUDP1.SendBuffer(ReqCode,4);
end;
end;
解决方案 »
- Hint 何解
- 网站改版,大家捧场,散分.
- 在WORD中分段显示数据库的内容
- 我再for语句中调用其它窗体老提示错误
- 如何设置ScrollBar的背景颜色!
- ADOTable连接DBGrid后怎样让dbgrid按一列排序?
- 讨论一下websnap+ado+sql server!~~~~~
- 谁用过ABC的控件(想实机QQ的那样的Outlook样式的东西)?
- 怪问题!!!!急!!!!高手来!!!!
- 关于DELphi SCROOL box 滚轴问题
- delphi +sql server 是不是比 +mysql 有很多优势?ms 是大哥?!
- 怎样在SQL2000数据库中存入图像(.bmp ,.jpg)?急!!!!
客户端:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var CCode:array[0..3]of char; TmpStream : TMemoryStream;
SendSize : integer;
begin
NMUDP1.ReadBuffer(CCode,NumberBytes);
if CCode[0]='s' then
begin
TmpStream:=TMemoryStream.Create;
try
if BmpStream.Size=0 then
begin
BmpStream.Clear;
ScreenCap;
end;
if LeftSize>BufSize then SendSize:=BufSize else SendSize:=LeftSize;
//BmpStream.ReadBuffer(TmpStream,SendSize);
TmpStream.CopyFrom(BmpStream,SendSize);
LeftSize:=LeftSize-SendSize;
if LeftSize=0 then BmpStream.Clear;
NMUDP1.RemoteHost:=FromIP;
NMUDP1.SendStream(TmpStream);
finally
TmpStream.Free;
end;
end;
end;服务器:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var ReqCode : array[0..3] of char; Bit:TBitmap;
jpe: TJPEGImage;
begin
ReqCode:='show';
NMUDP1.ReadStream(TmpStream);
RsltStream.CopyFrom(Tmpstream,NumberBytes);
if NumberBytes<BufSize then
begin
RsltStream.Position:=0;
if flag='form1' then
begin
jpe:=TJPEGImage.Create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
//Image1.Picture.Bitmap.LoadFromStream(RsltStream);
Image1.Picture.Bitmap:=Bit;
finally
jpe.Free;
Bit.Free;
end;
end else
if flag='form2' then
begin
jpe:=TJPEGImage.create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
StretchBlt(form2.Canvas.Handle,0,0,screen.Width,screen.Height,
Bit.Canvas.Handle,0,0,600,450,srccopy);
form2.Show;
finally
Bit.Free;
jpe.free;
end;
end;
TmpStream.Clear;
RsltStream.Clear;
end else
begin
TmpStream.Clear;
NMUDP1.RemoteHost:=edit1.Text;
NMUDP1.SendBuffer(ReqCode,4);
end;
end;
jpeg;procedure TForm1.Button1Click(Sender: TObject);
var
dc:hdc;
bmp:tbitmap;
jpg:tjpegimage;
stream:tmemorystream;
begin
i:=gettickcount;
dc:=getdc(0);
bmp:=tbitmap.Create;
bmp.width:=screen.Width; bmp.height:=screen.height;
bitblt(bmp.canvas.handle,0,0,bmp.width,bmp.height,dc,0,0,srccopy);
releasedc(0,dc);
stream:=tmemorystream.Create;
jpg:=tjpegimage.Create;
jpg.grayscale:=true;
jpg.Assign(bmp);
jpg.SaveToStream(stream);
nmstrm1.PostIt(stream);
jpg.free;
stream.free;
bmp.free;
end;procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
strm: TStream);
var
jpg:tjpegimage;
begin
jpg:=tjpegimage.Create;
jpg.LoadFromStream(strm);
image1.Picture.Bitmap.assign(jpg);
showmessage(inttostr(gettickcount-i));
end;