j'essaye d'automatiser un logiciel, on utilisant une boucle qui compare a chaque fois deux capture d’écran et mon programme est ci après, mais j ai un problème au niveau de la boucle qui m'affiche "Un problème est a l'origine du dysfonctionnement du programme, fermez le programme ", et j arrive pas a comprendre ou est le problème.
j espère que quelqu'un peut m'aider, Merci d'avance
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <GuiTreeView.au3>
#include <ScreenCapture.au3>
#include <GDIPlus.au3>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;les fonctions;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func Chargement_profil($param1)
WinSetOnTop("Administrateur : C:\Windows\system32\cmd.exe","", 1)
MouseClick ( "left" , 512, 348 , 1 , 10 )
Send("trace_profil" &$param1 &".pcom")
Send("{ENTER}")
WinSetOnTop("Administrateur : C:\Windows\system32\cmd.exe","", 0)
WinExists("Administrateur : C:\Windows\system32\cmd.exe")
WinSetOnTop("PCOM32 - [trace_profil" &$param1 &".pcom]","", 1)
WinWaitActive("PCOM32 - [trace_profil" &$param1 &".pcom]")
Send ("{F5}")
Sleep(120000)
Send ("!{F4}")
EndFunc
Func Chargment_Ics()
;ouvrir INQ
Run("C:\Program Files (x86)\Integri\INQ Test Tool 7.0\bin\inq70.exe")
WinWaitActive("INQ Test Tool")
Sleep(4000)
;selectionner le projet
MouseClick ( "left" , 21, 161 , 1 , 10 )
WinWaitActive("Select File")
Sleep(2000)
MouseClick ( "left" , 410, 140 , 1 , 10 )
Send("C:\ProgramData\Clear2Pay\L2 CCD Card Test Suite\Data")
Send("{ENTER}")
Sleep(2000)
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("Project.prj")
Send("{ENTER}")
Sleep(10000)
;charger l ICS
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}")
Sleep(2000)
WinWaitActive("Select File")
Sleep(2000)
Send("TEST_MCCS.tre")
Send("{TAB}")
Send("{TAB}")
Send("{DOWN}")
Send("{DOWN}")
Sleep(1000)
Send("{ENTER}")
Sleep(30000)
;conncter la carte
MouseClick ( "left" , 108, 408 , 1 , 10 )
Sleep(2000)
;cliques start
MouseClick ( "left" , 205, 266 , 1 , 10 )
;selectionner la card image
Sleep(2000)
MouseClick ( "left" , 76, 454 , 1 , 10 )
;selectionner la card image
Sleep(2000)
; decrocher test desctructive
MouseClick ( "left" , 317, 272 , 1 , 10 )
;cliquer sur ok
MouseClick ( "left" , 861, 267 , 1 , 10 )
Send("{ENTER}")
EndFunc
Func Capture_Ecran()
_ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image2.jpg",1552, 841,1577, 857)
EndFunc
Func Compare_CaptureEcran ($bm1, $bm2)
Local $fname1
Local $fname2
;Local $bm1
;Local $bm2
Local $Bm1W
Local $Bm1H
Local $BitmapData1
Local $Stride
Local $Scan0
Local $ptr1
Local $Bm2W
Local $Bm2H
Local $BitmapData2
Local $ptr2
Local $size1
Local $size2
Local $call
Local $Reponse
$Bm1W = _GDIPlus_ImageGetWidth($bm1)
$Bm1H = _GDIPlus_ImageGetHeight($bm1)
$BitmapData1 = _GDIPlus_BitmapLockBits($bm1, 0, 0, $Bm1W, $Bm1H, $GDIP_ILMREAD, $GDIP_PXF32RGB)
$Stride = DllStructGetData($BitmapData1, "Stride")
$Scan0 = DllStructGetData($BitmapData1, "Scan0")
$ptr1 = $Scan0
$size1 = ($Bm1H - 1) * $Stride + ($Bm1W - 1) * 4
$Bm2W = _GDIPlus_ImageGetWidth($bm2)
$Bm2H = _GDIPlus_ImageGetHeight($bm2)
$BitmapData2 = _GDIPlus_BitmapLockBits($bm2, 0, 0, $Bm2W, $Bm2H, $GDIP_ILMREAD, $GDIP_PXF32RGB)
$Stride = DllStructGetData($BitmapData2, "Stride")
$Scan0 = DllStructGetData($BitmapData2, "Scan0")
$ptr2 = $Scan0
$size2 = ($Bm2H - 1) * $Stride + ($Bm2W - 1) * 4
$smallest = $size1
If $size2 < $smallest Then $smallest = $size2
$call = DllCall("msvcrt.dll", "int:cdecl", "memcmp", "ptr", $ptr1, "ptr", $ptr2, "int", $smallest)
_GDIPlus_BitmapUnlockBits($bm1, $BitmapData1)
_GDIPlus_BitmapUnlockBits($bm2, $BitmapData2)
Return ($call[0]=0)
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;program pricipal;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; lancement des chargment des profils :
Run("cmd")
WinWaitActive("Administrateur : C:\Windows\system32\cmd.exe")
Send("d:")
Send("{ENTER}")
Send("cd pcom_Dual_Profile_n2")
Send("{ENTER}")
Local $unefois
$unefois= 0
Local $local
$local= 1
For $local = 1 To 2 Step 1
Chargement_profil($local)
If $local = 1 Then
Chargment_Ics()
EndIf
WinSetOnTop("INQ Test Tool","", 1)
;selectionner la card image
Sleep(2000)
MouseClick ( "left" , 76, 454 , 1 , 10 )
;selectionner la card image
Sleep(2000)
;changer la cared image
MouseClick ( "left" , 427, 306 , 1 , 10 )
Send("{DOWN}")
;cliquer sur ok
MouseClick ( "left" , 861, 267 , 1 , 10 )
Send("{ENTER}")
;selectionner les tests
Sleep(2000)
MouseClick ( "left" , 81, 500 , 1 , 10 )
Send("{ENTER}")
;selectionner les tests applicable
Sleep(2000)
MouseClick ( "left" , 229, 132 , 1 , 10 )
Send("{DOWN}")
Send("{DOWN}")
Send("{DOWN}")
Send("{ENTER}")
Sleep(20000)
MouseClick ( "left" , 394, 550 , 1 , 10 )
;end tests
Sleep(7000)
;Sleep(50000)
MouseClick ( "left" , 261, 580 , 1 , 10 )
Send("{END}")
WinSetOnTop("INQ Test Tool","", 0)
;MsgBox($MB_SYSTEMMODAL, "", "ok")
;Send("#D")
[color=#FF0040]Do
sleep(100000)
Capture_Ecran()
Local $bbm1 = _GDIPlus_ImageLoadFromFile("C:\Users\kaoutait\Documents\GDIPlus_Image1.jpg")
Local $bbm2 = _GDIPlus_ImageLoadFromFile("C:\Users\kaoutait\Documents\GDIPlus_Image2.jpg")
$Reponse = Compare_CaptureEcran($bbm1, $bbm2)
Until($Reponse = False)
[/color]
WinSetOnTop("Administrateur : C:\Windows\system32\cmd.exe","", 1)
Next


