Voilà , j'ai fais un petit utilitaire pour lors de l'appui de la combinaisons CTRL+A, l'ordinateur prend un screenshot de l'écran...
Ce code fonctionne, hors je veux qu'il puisse le faire même si la fenêtre dans lequel j'ai utilisé le keyboardshorcut est en background...
De la même méthode que fraps, une combinaison pour screenshot...
Code source :
Code : Tout sélectionner
;@author Progi1984
Procedure Desktop_MakeScreenshot(Filename.s)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux ;{
Protected lProgram.l
RunProgram("import", "-silent -window root "+GetFilePart(Filename), GetPathPart(Filename))
;}
CompilerCase #PB_OS_Windows ;{
Protected lImage.l
Protected hDC.l
lImage = CreateImage(#PB_Any, GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
hDC = StartDrawing(ImageOutput(lImage))
BitBlt_(hDC,0,0,ImageWidth(lImage),ImageHeight(lImage),GetDC_(GetDesktopWindow_()), 0, 0, #SRCCOPY)
StopDrawing()
ReleaseDC_(GetDesktopWindow_(), hDC)
SaveImage(lImage, Filename)
;}
CompilerEndSelect
EndProcedure
Enumeration
#CTRLA
EndEnumeration
OpenWindow ( 0 , 388, 23, 414, 182, "GoScreen" , #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar )
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_A, #CTRLA)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Menu
Select EventMenu()
Case #CTRLA
Desktop_MakeScreenshot("C:\Users\Shinao\Desktop\Screens\screenshot"+Str(Date())+".jpg")
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
PS : Cette utilitaire me permettrait de prendre des screenshots en jeu donc plein écran, si ça peux aider
Edit : lors d'un delay(), je peux mettre la fenêtre en background , le screenshot se prend..

Donc je me doute que je dois utiliser une autre méthode que celui du addkeyboardshorcut, cependant les API et les event windows je ne connais pas, quelqu'un pourrait m'éclairer ou me donner un bout de code?