[..] Problème de WinActivate ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pr1
Niveau 1
Niveau 1
Messages : 3
Enregistré le : lun. 22 sept. 2008 09:18
Status : Hors ligne

[..] Problème de WinActivate ?

#1

Message 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
Modifié en dernier par ani le lun. 22 sept. 2008 12:15, modifié 1 fois.
Raison : Ajout des balises (titre & code)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#2

Message par Tlem »

Quel est le code de demo5.bat.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pr1
Niveau 1
Niveau 1
Messages : 3
Enregistré le : lun. 22 sept. 2008 09:18
Status : Hors ligne

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

#3

Message 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.
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#4

Message 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.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Répondre