ارسال صورة ( كلين / سرفر)
#1
السلام عليكم
حاولت صناعة برنامج اتصال بين جهازين لاكن تصوير سطح الشاشة لايعمل
إقتباس :var
datastr: String;
item: Tlistitem;
positiona:integer;
strarr : Coucou;
jpg:tjpegimage;

begin
datastr := socket.receivetext;

if strarr[0]='ss' then begin
form4.show;
form4.sstatusbar1.panels[0].text:='please wait ....' ;
application.processmessages;
ms := tmemorystream.create;
ms.position := 0;


jpg := tjpegimage.create;
try
sleep(1500);
if ms.size <>0 then
jpg.loadfromstream(ms) ;
sleep(1300);
form4.img1.picture.assign(jpg);
finally
ms.free;
jpg.free;
form4.sstatusbar1.panels[0].text:='load image ....done!' ;
end;
السرفر

إقتباس : if copy(datastr,0,positiona-1 )= 'ss' then begin
socket.sendtext('ss|');
capturesend(socket,50);


function screenshot():tbitmap;
var
c: Tcanvas;
r: Trect;
bild : Tbitmap;
begin
c := tcanvas.create;
c.handle := getwindowdc(getdesktopwindow);
try
bild := tbitmap.create;
r := rect(0, 0, screen.width, screen.height);
bild.width := screen.width;
bild.height := screen.height;
bild.canvas.copyrect(r, c, r);
finally
releasedc(0, c.handle);
c.free;
end;
result := bild;
end;

procedure capturesend(socket:tcustomwinsocket;quality : Integer);
var
header : Tmsgheader;
bit : Tbitmap;
jpg : Tjpegimage;
ms,s : Tmemorystream;
begin
bit := screenshot();
jpg := tjpegimage.create;
jpg.compressionquality := quality;
jpg.compress;
jpg.assign(bit);
ms := tmemorystream.create;
jpg.savetostream(ms);
bit.free;
jpg.free;
ms.position := 0;

header.opcode := msg_image_follows;
header.payloadlen := ms.size;

s := tmemorystream.create;
s.position := 0;
s.write(header,sizeof(header));
s.copyfrom(ms,ms.size);
s.position := 0;
socket.sendstream(s);
ms.free;
end;

البرنامج كامل

.jpg   2011-11-25_121939.jpg (الحجم : 23.32 ك ب / التحميلات : 86)
كود :
www.multiupload.com/7OU2V9ASDL
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم