Page 1 sur 1

[..] Problème de WinActivate ?

Posté : lun. 22 sept. 2008 09:35
par pr1
Bonjour,

j'ai créé un script AutoIt qui lance une animation Flash ("Run" un fichier demo5.bat qui déclenche l'animation demo5.exe), attend qu'elle tourne ("ProcessWait"), puis qui active la fenêtre principale ("WinActivate") de ladite animation.
Alors que ce script fonctionne parfaitement dans 90 % des cas lorsque je le lance à la main, lorsqu'il est lancé par le Task Scheduler de Windows, il ne trouve quasiment jamais la fenêtre de l'animation ("Macromedia Flash Player 7"), même si celle-ci est apparaît dans la liste des fenêtres ouvertes.

Quelqu'un a-t-il déjà rencontré ce genre de problème ?

Cordialement,

pr1

Code : Tout sélectionner

----------------------------- Mon script -------------------------------


Run($flash_process_name, "", @SW_MAXIMIZE)
    
; 2008-09-19 pour forcer la mise au premier plan de la demo Flash
; chose que Run semble rater une fois sur deux
; Run("demo5.bat", "")
if @error <> 0 Then
    FileWrite($debug_file, "Could not run demo5.bat. Exiting..." & @CRLF)
    FileClose($debug_file)
    Exit(2)
EndIf
    
; slow down so that the Macromedia Flash Window has time to active
sleep(2000)
; Wait for process to be up and running
Dim $processwait = ProcessWait($flash_process_name)
If $processwait == 0 Then
    FileWrite($debug_file, "ProcessWait timed out. Exiting..." & @CRLF)
    FileClose($debug_file)
    Exit(3)
EndIf
    
; Activate window
Dim $winactivate_result = WinActivate("Macromedia")
If $winactivate_result == 0 Then
    FileWrite($debug_file, "Activating '" & $flash_window_name & _
    "' window was unsuccessful because window could not be found" & @CRLF)
    FileWrite($debug_file, "List of active windows:" & @CRLF)
    local $winlist = WinList()
    For $i = 1 to $winlist[0][0]
        If $winlist[$i][0] <> "" Then
    FileWrite($debug_file, "Title= '" & $winlist[$i][0] & "', Handle= '" & $winlist[$i][1] & "'" & @CRLF)
        EndIf
    Next
    FileWrite($debug_file, "Exiting(2)..." & @CRLF)
    FileClose($debug_file)
    exit(4)
EndIf

Re: [..] Problème de WinActivate ?

Posté : lun. 22 sept. 2008 20:58
par Tlem
Quel est le code de demo5.bat.

Re: [..] Problème de WinActivate ?

Posté : mar. 23 sept. 2008 10:03
par pr1
demo5.bat lance demo5.exe. J'ai créé ce .bat pensant que la fonction Run d'AutoIt ne fonctionnait pas correctement.

herewasplato sur autoitcript.com a peut-être trouvé mon problème : l'écran du PC sur lequel tourne mon script étant verrouillé, la fonction WinActivate ne peut pas fonctionner.

http://www.autoitscript.com/forum/index ... ntry582749

J'essaye les solutions qu'il propose et publie dans ce thread celle qui résoud mon problème, si j'arrive à le résoudre.

Merci de votre aide.

Re: [..] Problème de WinActivate ?

Posté : jeu. 25 sept. 2008 03:25
par SagePourpre
pr1 a écrit :Bonjour,

j'ai créé un script AutoIt qui lance une animation Flash ("Run" un fichier demo5.bat qui déclenche l'animation demo5.exe), attend qu'elle tourne ("ProcessWait"), puis qui active la fenêtre principale ("WinActivate") de ladite animation.
Alors que ce script fonctionne parfaitement dans 90 % des cas lorsque je le lance à la main, lorsqu'il est lancé par le Task Scheduler de Windows, il ne trouve quasiment jamais la fenêtre de l'animation ("Macromedia Flash Player 7"), même si celle-ci est apparaît dans la liste des fenêtres ouvertes.

Tu as mis un WinWait avant Winactivate ?

Ça pourrait être ton problème.

Run("fichier.exe")
Processwait("fichier.exe")
*** WINWAIT("fichier.exe")
winactivate("fichier.exe")

S'il n'y a pas de winwait, le script passe directement à winactivate ce qui peut causer
un problème si la fenêtre n'a pas eu le temps d'être crée.