[ reiser @ 01.10.2006. 11:51 ] @
Kako snimiti screenshot desktopa u bmp formatu, ali preko cistog apija ? Ovaj kod bi trebao da preslika desktop u neku promenljivu (valjda), ali kako to onda snimiti u fajl ?

Code:

procedure TakeScreenshot(const AFileName : String);
var
  DC, DCC         : HDC;
  dskwnd          : HWND;
  BMPInfo         : TBitmapInfo;
  DIBBV           : pointer;
  DIBHandle       : HBITMAP;
  rwidth, rheight : DWORD;
  prevobj         : HGDIOBJ;
begin
  dskwnd := GetDesktopWindow;

  rwidth := GetSystemMetrics(SM_CXSCREEN);
  rheight := GetSystemMetrics(SM_CYSCREEN);

  DC := GetDCEx(dskwnd, 0, DCX_CACHE or DCX_WINDOW);

  DCC := CreateCompatibleDC(0);

  ZeroMemory(@BMPInfo, SizeOf(TBitmapInfo));
  BMPInfo.bmiHeader.biSize := SizeOf(BITMAPINFOHEADER);
  BMPInfo.bmiHeader.biBitCount := 24;
  BMPInfo.bmiHeader.biWidth := rwidth;
  BMPInfo.bmiHeader.biHeight := -rheight;
  BMPInfo.bmiHeader.biCompression := BI_RGB;
  BMPInfo.bmiHeader.biPlanes := 1;

  DIBHandle := CreateDIBSection(DC, BMPInfo, DIB_RGB_COLORS, DIBBV, 0, 0);
  GDIFlush;
  prevobj := SelectObject(DCC, DIBHandle);
  BitBlt(DCC, 0, 0, rwidth, rheight, DC, 0, 0, SRCCOPY);

  // ??????

  SelectObject(DCC, prevobj);
  DeleteObject(DIBHandle);
  DeleteDC(DCC);
  ReleaseDC(dskwnd, DC);
end;

[ savkic @ 01.10.2006. 15:58 ] @
Primer P. Belowa.

Code:

Procedure SaveScreenImageToFile( Const afilename: String );
var
  ScreenCanvas: TCanvas;
  bmp: TBitmap;
  R: TRect;
begin
  ScreenCanvas:= TCanvas.Create;
  try
    ScreenCanvas.handle := CreateDC( 'DISPLAY', Nil, Nil, Nil );
    R:= Rect( 0, 0, Screen.Width, Screen.Height );
    bmp:= TBitmap.Create;
    try
      bmp.width := screen.width;
      bmp.height := screen.height;
      bmp.canvas.copyrect( R, ScreenCanvas, R );
      bmp.SaveToFile( aFilename );
    finally
      bmp.free;
    end;
  finally
    DeleteDC( ScreenCanvas.Handle );
    ScreenCanvas.Free;
  end;
end;
[ reiser @ 01.10.2006. 16:39 ] @
To sam mogao i ja da napisem..

Citat:
Kako snimiti screenshot desktopa u bmp formatu, ali preko cistog apija ?
[ SleepLess @ 05.10.2006. 08:48 ] @
A da se lepo neko od vas podseti ascii kodova... jedna od mogucih varijanti je da pozovete ascii kod "print screen" funkcije... i onda samo to damujete u menoriju i to se lepo sacuva kao *.bmp... ako zelite mogu vam napisati kod... jako je prost... samo me sada smara da kuckam... odoK da dzonjam...
[ reiser @ 05.10.2006. 14:28 ] @
Ma daj molim te.. :)
Anyway, dobio sam uputstvo kako da resim problem (nisam jos probao), ali trebalo bi da radi.

poz
[ Nemanja Avramović @ 05.10.2006. 14:57 ] @
Ajde ako radi taj kod podeli ga sa nama