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.. :wink:
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 :oops:
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.




@++