Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako napraviti screenshot desktopa...

[es] :: Pascal / Delphi / Kylix :: Kako napraviti screenshot desktopa...

[ Pregleda: 958 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

reiser
Vranje

Član broj: 7895
Poruke: 1884
*.dialup.neobee.net.



Profil

icon Kako napraviti screenshot desktopa...01.10.2006. u 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;

01.10.2006. u 11:51 

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 1079
212.200.219.*



Profil

icon Re: Kako napraviti screenshot desktopa...01.10.2006. u 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;

01.10.2006. u 15:58 

reiser
Vranje

Član broj: 7895
Poruke: 1884
*.dialup.neobee.net.



Profil

icon Re: Kako napraviti screenshot desktopa...01.10.2006. u 16:39
To sam mogao i ja da napisem..

Citat:
Kako snimiti screenshot desktopa u bmp formatu, ali preko cistog apija ?
01.10.2006. u 16:39 

SleepLess

Član broj: 70723
Poruke: 64
*.gw.tehnicom.net.



Profil

icon Re: Kako napraviti screenshot desktopa...05.10.2006. u 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...
SleepLess over and out
05.10.2006. u 08:48 

reiser
Vranje

Član broj: 7895
Poruke: 1884
*.dialup.neobee.net.



Profil

icon Re: Kako napraviti screenshot desktopa...05.10.2006. u 14:28
Ma daj molim te.. :)
Anyway, dobio sam uputstvo kako da resim problem (nisam jos probao), ali trebalo bi da radi.

poz
05.10.2006. u 14:28 

Nemanja Avramović
PHP developer, Webinsane
Mladenovac, Srbija

Član broj: 32202
Poruke: 3769
195.252.99.*

ICQ: 266136396
Sajt: www.avramovic.info


Profil

icon Re: Kako napraviti screenshot desktopa...05.10.2006. u 14:57
Ajde ako radi taj kod podeli ga sa nama
Moj sajt. Moj blog. Moj avatar. Moj grad. Moja frizura.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
05.10.2006. u 14:57 

[es] :: Pascal / Delphi / Kylix :: Kako napraviti screenshot desktopa...

[ Pregleda: 958 | Odgovora: 5 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.