[ tandarela @ 29.07.2007. 20:21 ] @
Pozdrav svima.

Pokusavam da napravim aplikaciju koja bi na xx sekundi/minuta uslikavala ekran. Ovo prevashodno radim da bi automatizovao uslikavanje kada igram neku igru. Po internetu ima raznih primera sa uzimanjem DC-a ekrana i BitBlt-ovanjem u offscreen DC. To svakako radi, medjutim kada se isto upotrebi pri radu fullscreen igre, onda se dobije crn bitmap. Zanima me da li je moguce "uhvatiti" tacno ono sto se u datom trenutku prikazuje korisniku na ekranu i kako?

tnx
[ dragansm @ 31.07.2007. 20:58 ] @
Predlazem ti da nateras vindozu da pomisli da ti neko svakih xx sekundi pritiska "Prnt Scrn", pa ti ostaje samo da iscitas bitmapu iz klipborda (sto bi trebalo da bude trivijalno):

keybd_event (VK_SNAPSHOT, 0, 0, 0); // kazi vindozi da je pritisnut print screen
keybd_event (VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0); // pa onda da je otpusten
clipboard_to_bmp( .... );

Jednostavnije resenje koje ne zahteva kompajler je Fraps (www.fraps.com).
Ono sto nisam proverio da li Print Screen uvek pravi capture za full screen rezim igara koje rade pod DirectX-om - nadam se da to nema nikakve veze sto imam instaliran DX SDK: ako se odlucis za ovakvo resenje, pokreni neku igricu, pritisni PS i vidi sta ima u klipbordu.
[ tandarela @ 01.08.2007. 00:53 ] @
Pre svega hvala na odgovoru. Probao sam vec to sa simulacijom PrintScreen dugmeta i nazalost negde radi negde ne. U igri za koju ovaj program i radim, to ne radi.
Cuo sam da Fraps ima tu funkcionalnost, sto znaci da resenje postoji. Mozda hookuje igru pa poziva neku funkciju OpenGL ili DirectX APIja, a mozda sam i lupio obzirom da se u te 2 stvari ne razumem previse...
[ kiklop74 @ 02.08.2007. 02:34 ] @
Pretrazi newsgrupe sa google i ovim pojmom "howto capture screenshot directx"
[ tandarela @ 03.08.2007. 02:08 ] @
Citat:
kiklop74: Pretrazi newsgrupe sa google i ovim pojmom "howto capture screenshot directx"


Ovo mi je zaistaa bitno pa uz rizik da ispadnem neznalica, moram da kazem da zaista ne razumem sta si time hteo da kazes... :$
[ X Files @ 03.08.2007. 06:18 ] @
Citat:
Ovo mi je zaistaa bitno pa uz rizik da ispadnem neznalica,

Jako malo ljudi se služi ovim odličnim servisom (Usenet ili NNTP ili newsgrouops), tako da nije ništa neobično.

Citat:
[...] moram da kazem da zaista ne razumem sta si time hteo da kazes... :$

1) IDI NA SAJT: www.google.com
2) PRETRAGA: capture screenshot directx
3) KLINK NA LINK: groups (pored njega postoje i: Web Images Video News Maps Gmail, ... itd)

Ponekad treba ici na 'More...' da bi dosao do linka Groups.

...ili:

1) IDI DIREKTNO NA LINK: http://groups.google.com/
2) PRETRAGA (Saerch Groups, *ne* Search for a group!): capture screenshot directx
3) KLINK NA TASTER: Search Groups

...ili, ako koristiš npr Operu i imaš Google Toolbar:

1) PRETRAGA: capture screenshot directx
2) PADAJUCA LISTA: Google Groups

Rezultat takve pretrage je na primer:
http://groups.google.com/group...um=0&ie=utf-8&oe=utf-8

Ključne reči možeš naravno ispraviti ako ti ne odgovaraju.
[ tandarela @ 03.08.2007. 20:14 ] @
@X Files : Hvala

@kiklop74 :
Nasao sam neke tekstove na tu temu i kazu da se koriste DirectX funkcije. Upravo sada mi se skida DirectX SDK. Ono sto me zanima je da li je moguce preko DirectX APIja uraditi screenshot OpenGL prozora? Da li je on toliko uopsten?
Ono sto sam probao je glReadBuffer medjutim i preko toga dobijam crn bitmap.
[ kiklop74 @ 03.08.2007. 21:51 ] @
Citat:

@kiklop74 :
Nasao sam neke tekstove na tu temu i kazu da se koriste DirectX funkcije. Upravo sada mi se skida DirectX SDK. Ono sto me zanima je da li je moguce preko DirectX APIja uraditi screenshot OpenGL prozora? Da li je on toliko uopsten?
Ono sto sam probao je glReadBuffer medjutim i preko toga dobijam crn bitmap.


Za opengl treba koristiti standardni GDI capture. Za takve i mnoge druge stvari samo se ode do sajta www.codeproject.com i uradi pretraga.

Na primer:
http://www.codeproject.com/dialog/screencap.asp
[ tandarela @ 04.08.2007. 01:54 ] @
Jeste, codeproject je nas najveci prijatelj, samo ga treba pretraziti kako treba sto ja ocigledno nisam uradio.