Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 05-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
he tratado de convertirlo pero no se si estara bien, por si os da la cosa de probarlo en Delphi

Código:
uses
  Windows, SysUtils;

procedure ScreenShot(BmpName: string);
var
  DesktopHwnd: HWND;
  DesktopParams: TRect;
  DevC: HDC;
  Width, Height: DWORD;
  FileSize: DWORD;
  BmpFileData: Pointer;
  BFileHeader: PBITMAPFILEHEADER;
  BInfoHeader: PBITMAPINFOHEADER;
  Image: PRGBTriple;
  CaptureDC: HDC;
  CaptureBitmap: HBITMAP;
  Junk: DWORD;
  FH: THandle;
begin
  DesktopHwnd := GetDesktopWindow();
  DevC := GetDC(DesktopHwnd);
  GetWindowRect(DesktopHwnd, DesktopParams);
  Width := DesktopParams.Right - DesktopParams.Left;
  Height := DesktopParams.Bottom - DesktopParams.Top;

  FileSize := SizeOf(BITMAPFILEHEADER) + SizeOf(BITMAPINFOHEADER) + (SizeOf(RGBTRIPLE) * Width * Height);
  BmpFileData := GlobalAlloc(GPTR, FileSize);

  BFileHeader := PBITMAPFILEHEADER(BmpFileData);
  BInfoHeader := PBITMAPINFOHEADER(Pointer(NativeUInt(BmpFileData) + SizeOf(BITMAPFILEHEADER)));

  BFileHeader.bfType := $4D42; // BM
  BFileHeader.bfSize := FileSize;
  BFileHeader.bfOffBits := SizeOf(BITMAPFILEHEADER) + SizeOf(BITMAPINFOHEADER);

  BInfoHeader.biSize := SizeOf(BITMAPINFOHEADER);
  BInfoHeader.biPlanes := 1;
  BInfoHeader.biBitCount := 24;
  BInfoHeader.biCompression := BI_RGB;
  BInfoHeader.biHeight := Height;
  BInfoHeader.biWidth := Width;

  Image := PRGBTriple(Pointer(NativeUInt(BmpFileData) + SizeOf(BITMAPFILEHEADER) + SizeOf(BITMAPINFOHEADER)));

  CaptureDC := CreateCompatibleDC(DevC);
  CaptureBitmap := CreateCompatibleBitmap(DevC, Width, Height);
  SelectObject(CaptureDC, CaptureBitmap);
  BitBlt(CaptureDC, 0, 0, Width, Height, DevC, 0, 0, SRCCOPY or CAPTUREBLT);
  GetDIBits(CaptureDC, CaptureBitmap, 0, Height, Image^, PBITMAPINFO(BInfoHeader), DIB_RGB_COLORS);

  FH := CreateFile(PChar(BmpName), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, 0, 0);
  WriteFile(FH, BmpFileData^, FileSize, Junk, nil);
  CloseHandle(FH);

  GlobalFree(BmpFileData);
  DeleteObject(CaptureBitmap);
  DeleteDC(CaptureDC);
  ReleaseDC(DesktopHwnd, DevC);
end;
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Código para hacer una captura de pantalla snakesskaters Varios 3 13-11-2009 11:09:25
Capturar Pantalla = Pantalla negra DarkDudae Gráficos 8 27-10-2008 12:29:36
Captura de pantalla en un Bitmap Neftali [Germán.Estévez] Trucos 0 30-06-2006 10:13:23
Capturar la pantalla en un archivo Jpg seoane Trucos 1 24-06-2006 02:34:19
codigo para descomprimir un archivo .zip JAI_ME Varios 4 30-01-2006 17:37:08


La franja horaria es GMT +2. Ahora son las 23:06:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi