السلام عليكم إخوانى فى المنتدى:
لقد قمت بعمل هذا الكود لنقل صورة لسطح المكتب من جهاز لآخر ولكنه يعطينى رسالة خطأ
10038 : socket operation on non socket
ويقوم بإرسال الصورة مرة واحدة فقط فلو أنكم تعرفون حلاً لهذه المشكلة فأرجوا الإفادة - أو حتى لو تعرفون طريقة أخرى وأسرع
ستحتاجون لوضع الأدوات الآتية على الفورم
* button1
* image1
* NMStrmServ1,NMStrm1 من الــ fastNet *** ولا تنسى ضبط خاصية الــ host الخاصة بهم
procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
strm: TStream);
begin
Image1.Picture.Bitmap.LoadFromStream(strm);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
winHWND: HWND;
WinDC: HDC;
Rect: TRect;
ABitmap:TBitmap;
PicStream:TmemoryStream;
begin
WinHWND := GetDesktopWindow ();
WinDC := GetDC (WinHWND);
GetWindowRect (WinHWND, rect);
ABitmap := TBitmap.Create;
ABitmap.Width := rect.right-rect.left;
ABitmap.Height := rect.Bottom-rect.Left;
BitBlt (ABitmap.canvas.handle, 0, 0, ABitmap.Width, ABitmap.Height, WinDC, 0, 0, SRCCOPY);
ReleaseDC (WinHWND, WINDC);
PicStream := Tmemorystream.create;
ABitmap.SaveToStream (PicStream);
PicStream.Position := 0;
NMStrm1.PostIt(PicStream);
// NMStrm1.sendstream(PicStream);
// PicStream.Free
end;
وشكراً
إبراهيم دياب