La Web del Programador: Comunidad de Programadores
 
    Pregunta:  43092 - ALMACENAR CAPTURA DE PANTALLA COMO FICHERO .JPG
Autor:  Fernando Montero Cazalla
Muy buenas:

Alguien sabría como se puede almacenar una captura de pantalla (formato CF_DIB apuntados por un handle) en un fichero con estensión JPG sin tener que crear primero el fichero en formato BMP.

Ahora consigo el fichero creando el BMP y luego convirtiendolo a JPG, pero lo suyo sería poder grabarlo directamente en JPG.

Muchas gracias.

  Respuesta:  Mario Gómez
Hasta ahora nunga he visto a nadie que lo saque directo en jpg.
Pero este es el que más se parece.
Cactura de Pantalla:
String CambiarFondo(String Original,String Copia )
{
TImage *Imagen = new TImage(this);
Graphics::TBitmap *Bitmap = new Graphics::TBitmap;

Imagen->Picture->LoadFromFile(Original);
Bitmap->Width= GetSystemMetrics(SM_CXSCREEN);
Bitmap->Height= GetSystemMetrics(SM_CYSCREEN);
Bitmap->Canvas->StretchDraw(Bitmap->Canvas->ClipRect,Imagen->Picture->Graphic);
Bitmap->SaveToFile(Copia);

if (FileExists(Copia))
{
TRegistry *Registro = new TRegistry();

Registro->RootKey= HKEY_CURRENT_USER;
if (Registro->OpenKey("Control Panel\\Desktop", false))
Registro->WriteString("Wallpaper", Copia);
Registro->WriteString("ConvertedWallpaper", Copia);
Registro->WriteString("OriginalWallpaper", Copia);
Registro->WriteString("TileWallpaper", '0');
Registro->WriteString("WallpaperStyle", '2');
Registro->CloseKey();

SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(Copia).c_str(),SPIF_SENDCHANGE);
}
}
CambiarFondo("C:\\1.jpg","C:\\1.bmp");

Se creas el archivo en jpg y si te motesta en bmp solo lo borras:
DeleteFileA(GetCurrentDir()+ "/1.bmp");