[R] Capture d’écran

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
moustache
Status : Hors ligne

[R] Capture d’écran

#1

Message par moustache »

Bonjour je cherche à faire une capture d’écran a des coordonnés précise de mon écran pour se la j’utilise la fonction : _ScreenCapture_Capture.

Tout fonctionne bien sauf que sa ne fonctionne que pour les pleins écrans au moment ou je précise des coordonnés, la fonction ne fonctionne plus. Dans mon exemple seul test.bmp s’enregistre, mais test2.bmp ne s’enregistre pas.

Voici mon code.

Code : Tout sélectionner

#include <ScreenCapture.au3>
_ScreenCapture_Capture("test.bmp") ; fonctionne
_ScreenCapture_Capture("test2.bmp",68,818,132,82) ; fonctionne pas
Comment remédié a ce problème ?
Modifié en dernier par moustache le sam. 30 oct. 2010 13:34, modifié 1 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Capture d’écran

#2

Message par timmalos »

Le 4eme parametre, Bottom doit être un nombre superieur au 2eme parametre, top, sinon ca ne peut pas marcher, logiquement :roll:

Code : Tout sélectionner

_ScreenCapture_Capture("test2.bmp",68,818,132,882)
devrait marcher
moustache
Status : Hors ligne

Re: [..] Capture d’écran

#3

Message par moustache »

Merci de ta réponsse timmalos, sa fonctionne le problèmme est résolut. Cependant y a t-il un moyen dans la fonction _ScreenCapture_Capture pour que les cooudoonnés soit calculé a partir d'une fenêtre et nomde l'écran entier. Sa me permetrai de ne pas a avoir a tout recalculé les coordonnés en cas de changemant de résolution d'écran ?

EDIT : J'ai trouvé la fonction pour fair la capture de coordonné dans un programme c'est :
_ScreenCapture_CaptureWnd

Seul problèmme il me faut le hander qui change a chaque foie que je le programme ce lence a nouveaux, je vais cherché si je peut le faire avec le titre de la fenêtre ou une fonction qui me permétré de récupéré le hander d'une fenêtre. Je vous tien au courant.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [R] Capture d’écran

#4

Message par timmalos »

WinGetHandle correspond à vos besoins.

Ou si vous connaissez le pid de votre processus, vous pouvez utiliser la fonction suivante :

Code : Tout sélectionner

Func _GetHwndFromPID($PID)
    $hWnd = 0
    $stPID = DllStructCreate("int")
    Do
        $winlist2 = WinList()
        For $i = 1 To $winlist2[0][0]
            If $winlist2[$i][0] <> "" Then
                DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $winlist2[$i][1], "ptr", DllStructGetPtr($stPID))
                If DllStructGetData($stPID, 1) = $PID Then
                    $hWnd = $winlist2[$i][1]
                    ExitLoop
                EndIf
            EndIf
        Next
        Sleep(100)
    Until $hWnd <> 0
    Return $hWnd
EndFunc ;==>_GetHwndFromPID
moustache
Status : Hors ligne

Re: [R] Capture d’écran  

#5

Message par moustache »

Merci de ta réponsse timmalos, en faite j'avai trouvé la résponsse en 3 minute apres avoir fait mon edit, j'ai passé le reste du temp a bien tester la fonction. Par contre je passe par le titre de la fenêtre au lieu du PID du processeur. Il y a une différance en terme de performance ou de stabilité ?

Voici ce que sa donne en resumant tout le poste.

Code : Tout sélectionner

#Include <ScreenCapture.au3>
$var=WinGetHandle("fenetre")
_ScreenCapture_CaptureWnd("test.bmp",$var,72,7,195,52)
Là je suis entrain de voir pour modifier la résolution de l'image qui est de 96 pour les capture d'écran. Pour la mètre à 350 car après l'image doit être traité par un logiciel qui n'accepte que la résolution entre 300 et 400.

Au début je voulais le faire par l'intermédiaire de GIMP, mais je vais essayé de voir pour le faire directement en Autoit ses plus marrant.Si je ne trouve pas d'ici demain je repasserai pour posé la question de manière officiel.
Répondre