Bonsoir à tous ! Il se fait tard, et après avoir passé ma soirée penché sur ce problème, j'ai décidé de venir demander de l'aide.
Voilà, tout à l'heure m'est venue l'idée de créer un script qui, en faisant un clique droit dans son icône de barre des tâches, enregistre une capture d'écran dans des dossiers prédéfinis (ici le Bureau ou mon dossier Dropbox). Quelques recherches sur internet et dans la doc m'ont amené à la création de ce script, dont je suis assez fier :
► Afficher le texteCapture
Code : Tout sélectionner
;~ Enregistre automatiquement les captures d'écran
#include <ScreenCapture.au3>
#include <Constants.au3>
#include <GDIPlus.au3>
Opt("TrayAutoPause", 0)
Opt("TrayMenuMode", 1)
$trayDeskID = TrayCreateItem("Capture vers Bureau")
$trayDropID = TrayCreateItem("Capture vers Dropbox")
$traySep1 = TrayCreateItem("")
$trayExit = TrayCreateItem("Quitter")
while 1
local $msg = TrayGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $trayDeskID
TrayItemSetState($trayDeskID, $TRAY_UNCHECKED)
saveToDesk()
Case $msg = $trayDropID
TrayItemSetState($trayDropID, $TRAY_UNCHECKED)
saveToDrop()
Case $msg = $trayExit
ExitLoop
EndSelect
WEnd
Func saveToDesk()
_GDIPlus_Startup()
local $hBMP = _ScreenCapture_Capture()
;~ _ScreenCapture_SaveImage(@DesktopDir & getName(@DesktopDir), $image) ;Pas terrible !
local $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
_GDIPlus_ImageSaveToFile($hBitmap, @DesktopDir & getName(@DesktopDir))
_GDIPlus_BitmapDispose($hBitmap)
_WinAPI_DeleteObject($hBMP)
_GDIPlus_Shutdown()
EndFunc
Func saveToDrop()
_GDIPlus_Startup()
local $hBMP = _ScreenCapture_Capture()
;~ _ScreenCapture_SaveImage(@UserProfileDir & "\Dropbox\Public" & getName(@UserProfileDir & "\Dropbox\public"), $image) ;Pas terrible !
local $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
_GDIPlus_ImageSaveToFile($hBitmap, @UserProfileDir & "\Dropbox\Public" & getName(@UserProfileDir & "\Dropbox\public"))
_GDIPlus_BitmapDispose($hBitmap)
_WinAPI_DeleteObject($hBMP)
_GDIPlus_Shutdown()
EndFunc
Func getName($path)
local $id = 0
local $name = "\Capture" & $id & ".jpg"
While FileExists($path & $name)
$id = $id + 1
local $name = "\Capture" & $id & ".jpg"
WEnd
Return $name
EndFunc
En lisant ce script vous pouvez voir que j'ai essayé deux méthodes d'enregistrement de la capture (directement avec
_ScreenCapture_Capture, ou en passant par
_GDIPlus_ImageSaveToFile), mais voilà qui nous amène à mon problème : la qualité de ces captures n'est vraiment pas terrible ! Il semblerait que la qualité baisse fortement à l'enregistrement, puisqu'en essayant le
script d'exemple de la fonction _GDIPlus_ImageSaveToFile, la capture d'écran garde sa résolution à l'affichage.
Voilà, vous savez tout de mon problème ! Je n'ai pas réussi à trouver de solution sur internet, et je trouve bien vexant de ne pas réussir à sauvegarder une capture d'écran correctement, alors que Paint le fait très bien...
C'est sur ces dernières paroles que je vous quitte, bonne nuit, en espérant qu'elle me porte conseil, et en attendant l'aide de l'un d'entre vous.