Page 1 sur 1
Screenshots d'un jeu
Publié : mer. 30/nov./2011 12:25
par bombseb
Bonjour,
J'aimerais faire un petit programme qui fasse des screenshots à répétition d'un jeu qui se lance en plein écran.
J'ai éssayé avec l'api GetDesktopWindow, mais évidemment ca ne marche pas puisque ca capture le bureau windows...
Est-ce que vous savez si c'est faisable facilement ?
Re: Screenshots d'un jeu
Publié : mer. 30/nov./2011 20:49
par jbernard13
et avec la touche Imp Ecran ?
Re: Screenshots d'un jeu
Publié : mer. 30/nov./2011 23:46
par Ar-S
Arf j'ai essayé ça mais au moment de prendre la capture il retourne sur le bureau.
Code : Tout sélectionner
UseJPEGImageEncoder()
Procedure CaptEcran (Destination$ , LargSortie, HautSortie)
EcranX.i = GetSystemMetrics_(#SM_CXSCREEN)
EcranY.i = GetSystemMetrics_(#SM_CYSCREEN)
Debug EcranX
Im = CreateImage(1, EcranX, EcranY)
If Im = 0
ProcedureReturn 0
Else
Debug Destination$+FormatDate("LDVM_%yyyy%mm%dd%hh%ii%ss",Date())+".jpg"
Debug Im
hWnd = GetDesktopWindow_()
hDDC = GetDC_(hWnd)
hDC = StartDrawing(ImageOutput(1))
BitBlt_(hDC,0,0,ImageWidth(1),ImageHeight(1),hDDC,0,0,#SRCCOPY)
StopDrawing()
ReleaseDC_(hWnd,hDDC)
If LargSortie = 0 Or HautSortie = 0 Or Str(LargSortie) = "" Or Str(HautSortie) = ""
ResizeImage(Im, EcranX, EcranY)
If LargSortie <> EcranX Or HautSortie <> EcranY
ResizeImage(Im, LargSortie, HautSortie)
EndIf
EndIf
Result = SaveImage(1, Destination$+FormatDate("LDVM_%yyyy%mm%dd%hh%ii%ss",Date())+".jpg",#PB_ImagePlugin_JPEG,8)
FreeImage(1)
If Result <> 0
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndIf
EndProcedure
Delay(8000) ; histoire d'avoir le temps de retourner dans le jeu pour tester.
Test = CaptEcran("C:\",800,600)
; Si résultat = 1 alors ça a marché sinon resultat = 0
Debug Test
Re: Screenshots d'un jeu
Publié : jeu. 01/déc./2011 12:14
par kernadec
bonjour bombseb
peut être que si tu faisais une recherche "screenshot" sur le forum..

Enfin en voilà une, Qui peut être va te donner des idées.
http://www.purebasic.fr/french/viewtopi ... 1462&hilit
Cordialement
Re: Screenshots d'un jeu
Publié : jeu. 01/déc./2011 16:13
par bombseb
Salut, merci pour vos réponses
et avec la touche Imp Ecran ?
Ben non, car je voudrais faire des copies d'écran à répétition et que ca me les sauve dans des fichiers bmp....tout ca automatiquement bien sur....
Apparement l'api GetDesktopWindow sert uniquement à capturer le bureau avec les applications ouvertes
Je pense qu'il faut bidouiller en directx pour faire ca...
Edit : J'ai peut être oublié de vous préciser que le jeux dont je veux faire des captures ouvre un écran directx en plein écran...
Re: Screenshots d'un jeu
Publié : jeu. 01/déc./2011 21:42
par Ar-S
Et sinon FRAPS ?
Ce qu'a dit JB n'est pas si idiot que ça.
Si en PB tu simules le clique "Impr Ecran" (surement via l'API SendMessage_ ), tu devrais pouvoir ensuite sauver (GetClipboardImage) l'image en Jpeg et recommencer l'opération toutes les x secondes avec une simple boucle...
Vu que imprim Ecran permet des captures même de jeu ça devrait marcher.
Re: Screenshots d'un jeu
Publié : mar. 13/déc./2011 15:05
par graph100
il y a pas mal de jeu maintenant dans lesquels imp ecran est géré par le jeu lui même. Essaie de faire un screen lol ^^
c'est pas géré.
J'avais vu un truc sur le fofo anglais pour dessiner dans l'ecran graphique du jeu, après la 3D, il doit être possible de copier ce qui est à l'écran. Mais cela impliquait des injections de dll etc... ca relève du niveau de fraps là !
Re: Screenshots d'un jeu
Publié : mar. 13/déc./2011 15:54
par djes
Si ton jeu est fait avec PB, un simple
Code : Tout sélectionner
u = GrabSprite(#PB_Any, 0, 0, 1024, 768)
SaveSprite(u, "c:\screenshot.bmp")
devrait le faire
Re: Screenshots d'un jeu
Publié : mar. 13/déc./2011 20:52
par comtois
Re: Screenshots d'un jeu
Publié : mar. 13/déc./2011 21:02
par bombseb
Merci, c'est exactement ca qui me fallait, mais bon ca à l'air trop compliqué, je laisse tomber
l'idée c'était de faire des screenshot à répétitions pour pouvoir ripper les sprites d'un jeu facilement...
Re: Screenshots d'un jeu
Publié : mar. 13/déc./2011 21:05
par venom
oui comme dit Ar-S,
via PB tu simule la touche imprime ecrant tout les x seconde via l'API je pense que ça peut le faire
voici un
post j'ai pas de PB sous la main pour tester mais tu doit trouver sa sur le forum.
@++