Hola, encontre un codigo aqui que copia la imagen del escritorio completo usando las GDI y la convierte en imagen JPEG para enviarla usando el componente NMStrm de builder:
HDC dc = GetDC(0);
Graphics::TCanvas *ScreenCanvas = new Graphics::TCanvas;
ScreenCanvas->Handle = dc;
std::auto_ptr<TJPEGImage>JImage(new TJPEGImage);
Image1->Picture->Bitmap->Width = Screen->Width;
Image1->Picture->Bitmap->Height= Screen->Height;
TRect rect = Rect(0,0,Screen->Width, Screen->Height);
Image1->Picture->Bitmap->Canvas->CopyRect(rect, ScreenCanvas, rect);
JImage->Assign(Image1->Picture->Graphic);
JImage->CompressionQuality = 19;
JImage->Compress();
std::auto_ptr<TMemoryStream> Stream(new TMemoryStream);
JImage->SaveToStream(Stream.get());
NMStrm1->PostIt(Stream.get());
Al recibir esta imagen, se despliega dentro de un Image en el programa que recibe... pero las imagenes se van introducioendo una dentro de otra, es decir, el programa me toma la imagen del escritorio y del programa que toma la imagen del escritorio... despues, al recivir la otra, en vez de refrescar la imagen ya tomada y poner la otra encima, me pone la nueva imagen dentro de la imagen que ya tomo... y asi se forma una imagen dentro de la otra como si fuera un tunel (perdon por esta explicacion, es la que encontre mas facil de hacer entender).
Como puedo evitar este efecto???... como puedo enviar la imagen pero sin antes convertirla a JPEG para que no pierda calidad???..... Gracias y perdon por el embrollo. Saludos