![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте
написал простейший пример просмотра удаленного экрана, но работает он почему то слишком медленно порядка 3-4 кадра в секунду Использовал indy 10 может у этих компонентов как нибудь скорость передачи настраивается? Кстати делаю копию экрана меньше например 100*100 - работает гораздо быстрее код сервера: Код:
procedure TMForm.idTCPServer1Execute(AContext: TIdContext);
var az:string;
w,h,raz:integer;
stream:tmemorystream;
begin
az:=Acontext.Connection.IOHandler.ReadLn;
if az='Screen' then
begin
stream:=tmemorystream.Create;
SImg:=TJpegImage.Create;
BImg:=TBitmap.Create;
w:=screen.Width;
h:=screen.Height;
bimg.Width:=w;
bimg.Height:=h;
bitblt(bimg.Canvas.Handle,0,0,w,h,getdc(0),0,0,srccopy);
SImg.Assign(BImg);
SImg.CompressionQuality:=70;
SImg.Compress;
simg.SaveToStream(stream);
raz:=stream.Size;
c.Connection.IOHandler.Write(raz);
c.Connection.IOHandler.Write(stream);
Bimg.free;
stream.free;
Simg.free;
end;код клиента: Код:
procedure form1.Button1Click(Sender: TObject);
begin
var
w,h,r:integer;
j:Tjpegimage;
b:tbitmap;
stream:tmemorystream;
begin
stream:=tmemorystream.Create;
j:=Tjpegimage.Create;
b:=tbitmap.Create;
while 1=1 do
begin
try
idTCPClient1.connection.IOHandler.WriteLn('Screen');
r:=TCPClt[id].Clt.IOHandler.ReadInteger;
stream.Position:=0;
sleep(10);
idTCPClient1.connection.IOHandler.ReadStream(stream,r);
stream.Position:=0;
j.LoadFromStream(stream);
b.Assign(j);
form1.image1.Picture.Bitmap:=b;
stream.Clear;
b.FreeImage;
end;radmin же например как то работает быстренько помогите разобраться если знаете в чем проблема может на WinSock для этого нужно переделать? низнай будет быстрее работать |