Bonsoir, voila pour ma première question sur ce forum
Depuis que j'ai découvert Autoit un petit projet me trotte dans la tête.
Comment expliqué sa.... Je cherche a avoir une capture miniature d'une Application qui n'est pas visible a l'écran.
je sais c'est un peut tordu.
PS : c'est de la faute a " periaz " et de sont topic : [..] Découper une fenêtre
J'ai fait un petit bout de Script pour que ce soit plus compréhensible.
Pré requis :
- il vous faut Autoit v3.3.0.0 car j'utilise la function " AdlibEnable() "
(dans la version Beta cette fonction été modifier, il faudra adapter le script en consequence... )
- il faut que le BlocNote soit lancer
(le choix du bloc note et un pure hasard au debut j'ai fait mes test sur VLC)
Ensuite :
- " Compiler " le script puis lancer le.
Le Bouton Capture fait une capture d'écran du Control Edit du Notepad
Cliquer sur le bonton Rafale et Saisissez du texte dans le notePad
Voici mon Bout de script:
► Afficher le texte
Code : Tout sélectionner
#include <ScreenCapture.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $Image = ""
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("WindowsCap", 625, 478, 192, 124)
$Button1 = GUICtrlCreateButton("Capture", 200, 440, 113, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Rafale", 350, 440, 113, 33, $WS_GROUP)
$Button3 = GUICtrlCreateButton("Stop", 500, 440, 113, 33, $WS_GROUP)
;$Pic1 = GUICtrlCreatePic($Image, 8, 8, 609, 425, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Pic1 = GUICtrlCreatePic($Image, 8, 8, 609, 425)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_Rafale()
Case $Button2
AdlibEnable("_Rafale",150)
Case $Button3
AdlibDisable()
EndSwitch
WEnd
Func _Rafale()
_MyScreenCap("[CLASS:Notepad]", "", "Edit1", @MyDocumentsDir & "\GDIPlus_Image.jpg")
;_MyScreenCap("[CLASS:QWidget]", "", "", @MyDocumentsDir & "\GDIPlus_Image.jpg")
_Diplay_Screen()
EndFunc
Func _Diplay_Screen()
$Image = @MyDocumentsDir & "\GDIPlus_Image.jpg"
GUICtrlSetImage($Pic1,$Image)
EndFunc
Func _MyScreenCap($_Class, $_Name, $_Control, $_Path)
Local $Image, $handle
$handle = ControlGetHandle($_Class, $_Name, $_Control)
_ScreenCapture_CaptureWnd ($_Path, $handle)
EndFunc
La Fonction " _MyScreenCap " permet de s'affranchir du Handle et de capturer un Control
Voici une capture d'écran :
En fait le problème vient de la fonction " _ScreenCapture_CaptureWnd "
qui ne capture que ce qui est visible a l'écran.
Si je reduit le Bloc note sa me capture un écran noir.
La solution Qui consiste a mettre le focus sur le Blocnote pour l'afficher aux premier plan ne me convient pas
Auriez vous une Idée ?