Page 1 sur 1
[..] Verification Process
Posté : ven. 15 oct. 2010 15:33
par aikiox
Bonjour,
J'essaye de faire un script qui verifie si un navigateur est en éxécution. Nous utilisons trois navigateur : IE, Chrome et Firefox
Donc en fonction des navigateurs ouvert, mettre un message d'erreur. Jusque la pas de probleme, mais quand je ferme l'application il me dit qu'il est toujours ouvert alors que non.
Voici mon code :
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
$ie = ProcessExists("iexplore.exe")
$chrome = ProcessExists("chrome.exe")
$firefox = ProcessExists("firefox.exe")
msgbox(0,"ok",$test)
GUICreate("GUI", 519, 672, 192, 124)
$Generate = GUICtrlCreateButton("Generate", 106, 584, 75, 25, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg = $GUI_EVENT_CLOSE
Exit
Case $nmsg = $Generate
if ($ie > 0) Then
msgbox(0,"Internet Explorer","Merci de fermer Internet Explorer")
ElseIf ($chrome > 0) Then
msgbox(0,"Google Chrome","Merci de fermer Google Chrome")
ElseIf ($firefox > 0) Then
msgbox(0,"Firefox","Merci de fermer Mozilla Firefox")
elseif ($ie > 0) and ($chrome > 0) Then
msgbox(0,"Internet Explorer et Chrome","Merci de fermer Internet Explorer et Chrome")
elseif ($ie > 0) and ($firefox > 0) Then
msgbox(0,"Internet Explorer et Mozilla Firefox","Merci de fermer Internet Explorer et Firefox")
elseif ($chrome > 0) and ($firefox > 0) Then
msgbox(0,"Google Chrome et Mozilla Firefox","Merci de fermer Google Chrome et Firefox")
elseif ($chrome > 0) and ($firefox > 0) and ($ie > 0) Then
msgbox(0,"Google Chrome et Mozilla Firefox","Merci de fermer Google Chrome, Internet Explorer et Firefox")
Else
MsgBox(0,"rien","rien")
EndIf
EndSelect
WEnd
Il n'est pas dutout optimisé...
Cordialement
Romain
Re: [..] Verification Process
Posté : ven. 15 oct. 2010 15:46
par TommyDDR
C'est parce que tu initialise tes variables $ie, $chrome et $firefox au début et tu n'y touche plus apres.
Il faut les modifier à chaque appui sur "Generate".
Fait plutot comme ca (Je n'ai pas améliorer ton code, juste décalé 3 lignes)
► Afficher le textecode
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
;~ msgbox(0,"ok",$test)
GUICreate("GUI", 519, 672, 192, 124)
$Generate = GUICtrlCreateButton("Generate", 106, 584, 75, 25, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg = $GUI_EVENT_CLOSE
Exit
Case $nmsg = $Generate
$ie = ProcessExists("iexplore.exe")
$chrome = ProcessExists("chrome.exe")
$firefox = ProcessExists("firefox.exe")
if ($ie > 0) Then
msgbox(0,"Internet Explorer","Merci de fermer Internet Explorer")
ElseIf ($chrome > 0) Then
msgbox(0,"Google Chrome","Merci de fermer Google Chrome")
ElseIf ($firefox > 0) Then
msgbox(0,"Firefox","Merci de fermer Mozilla Firefox")
elseif ($ie > 0) and ($chrome > 0) Then
msgbox(0,"Internet Explorer et Chrome","Merci de fermer Internet Explorer et Chrome")
elseif ($ie > 0) and ($firefox > 0) Then
msgbox(0,"Internet Explorer et Mozilla Firefox","Merci de fermer Internet Explorer et Firefox")
elseif ($chrome > 0) and ($firefox > 0) Then
msgbox(0,"Google Chrome et Mozilla Firefox","Merci de fermer Google Chrome et Firefox")
elseif ($chrome > 0) and ($firefox > 0) and ($ie > 0) Then
msgbox(0,"Google Chrome et Mozilla Firefox","Merci de fermer Google Chrome, Internet Explorer et Firefox")
Else
MsgBox(0,"rien","rien")
EndIf
EndSelect
WEnd
Re: [..] Verification Process
Posté : ven. 15 oct. 2010 15:50
par Jerome
Coucou,
Pourquoi ne pas mettre un timer qui dit "votre fenetre va se fermer automatiquement d'ici x seconde " puis mettre un process kill ?
Je sait que parfois pour chrome, meme apres fermeture du navigateur, un process chrome.exe continu de tourner.
Jérôme
Re: [..] Verification Process
Posté : ven. 15 oct. 2010 15:58
par TommyDDR
Ce n'est pas une question de process dans ce cas, c'est une question de réactualisation de variables.
Re: [..] Verification Process
Posté : ven. 15 oct. 2010 16:04
par aikiox
Merci je ne peux essayer mais la solution me semble bonne.
ce bout de script m'evite de forcer la fermeture des navigateur utilisateur qui veulent installer le logiciel
Merci
Re: [..] Verification Process
Posté : sam. 16 oct. 2010 21:49
par Tlem
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Re: [R] Verification Process
Posté : sam. 23 oct. 2010 14:21
par aikiox
Merci
Re: [..] Verification Process
Posté : sam. 23 oct. 2010 14:29
par timmalos
Par contre il faudrait inverser, et mettre les conditions pour les 3 navigateurs AVANT celles pour 2 navigateurs et terminer par celles pour 1 navigateur, sinon si vous avez Firefox et IE de lancé, il ne vous avertira que pour le premier.
Re: [..] Verification Process
Posté : sam. 23 oct. 2010 14:48
par aikiox
Bonjour,
Je l'ai modifier
► Afficher le texte
Code : Tout sélectionner
While 1
$ie = ProcessExists("iexplore.exe")
$chrome = ProcessExists("chrome.exe")
$firefox = ProcessExists("firefox.exe")
if ($chrome > 0) and ($firefox > 0) and ($ie > 0) Then
$choix = msgbox(5,"Google Chrome et Mozilla Firefox","Merci de fermer Google Chrome, Internet Explorer et Firefox")
Switch $choix
Case 2
msgbox(0,"Installation","L'installation du logiciel est annulé")
Exit
EndSwitch
elseif ($ie > 0) and ($chrome > 0) Then
$choix = msgbox(5,"Internet Explorer et Chrome","Merci de fermer Internet Explorer et Chrome")
Switch $choix
Case 2
msgbox(0,"Installation","L'installation du logiciel est annulé")
Exit
EndSwitch
elseif ($ie > 0) and ($firefox > 0) Then
$choix = msgbox(5,"Internet Explorer et Mozilla Firefox","Merci de fermer Internet Explorer et Firefox")
Switch $choix
Case 2
msgbox(0,"Installation","L'installation du logiciel est annulé")
Exit
EndSwitch
elseif ($chrome > 0) and ($firefox > 0) Then
$choix = msgbox(5,"Google Chrome et Mozilla Firefox","Merci de fermer Google Chrome et Firefox")
Switch $choix
Case 2
msgbox(0,"Installation","L'installation du logiciel est annulé")
Exit
EndSwitch
elseif ($ie > 0) Then
$choix = msgbox(5,"Internet Explorer","Merci de fermer Internet Explorer")
Switch $choix
Case 2
msgbox(0,"Installation","L'installation du logiciel est annulé")
Exit
EndSwitch
ElseIf ($chrome > 0) Then
$choix = msgbox(5,"Google Chrome","Merci de fermer Google Chrome")
Switch $choix
Case 2
msgbox(0,"Installation","L'installation du logiciel est annulé")
Exit
EndSwitch
ElseIf ($firefox > 0) Then
$choix = msgbox(5,"Firefox","Merci de fermer Mozilla Firefox")
Switch $choix
Case 2
msgbox(0,"Installation","L'installation du logiciel est annulé")
Exit
EndSwitch
Else
ExitLoop
EndIf
WEnd
MsgBox(0,"Navigateur","Les navigateurs sont fermés.")
Cordialement
Romain
Re: [..] Verification Process
Posté : dim. 24 oct. 2010 16:29
par sylvanie
Bonjour,
je viens de voir ce post, et me permet de suggérer une centralisation des browsers en un tableau à 2 dimensions : nom du navigateur; état
voici un exple reprenant l'idée de ce que vous voulez faire
► Afficher le texte
Code : Tout sélectionner
$liste_navigateur="iexplore.exe;chrome.exe;firefox.exe"
$liste_navigateur=StringSplit($liste_navigateur,";")
$dimension=$liste_navigateur[0]
Dim $etat_navigateur[$dimension][2]
;initialisation du tableau contenant le nom du navigateur et son statu
_Init_browser_state($liste_navigateur,$etat_navigateur)
Dim $liste_navigateurs_ouverts=""
$nb_navigateur_ouvert=_getbrowser_state($etat_navigateur,$liste_navigateurs_ouverts)
While ($nb_navigateur_ouvert<>0)
MsgBox(0,"Fermeture applicative requise","Merci de bien vouloir fermer les applications suivantes"&@CRLF&$liste_navigateurs_ouverts)
Sleep(1000)
$nb_navigateur_ouvert=_getbrowser_state($etat_navigateur,$liste_navigateurs_ouverts)
Wend
Exit 0
Func _Init_browser_state($liste,ByRef $tab)
Local $ind
For $ind=0 To $liste[0]-1
$tab[$ind][0]=$liste[$ind+1]
$tab[$ind][1]=ProcessExists($tab[$ind][0])
Next
EndFunc
Func _getbrowser_state($liste,ByRef $liste_nav)
Local $ind,$dim,$ret
$ret=0
$dim=UBound($liste)
$liste_nav=""
For $ind=0 To $dim-1
$liste[$ind][1]=ProcessExists($liste[$ind][0])
If($liste[$ind][1]<>0) Then
$ret+=1
$liste_nav&=$liste[$ind][0]&" "
EndIf
Next
Return $ret
EndFunc
L'avantage ici est que si vous avez un 4eme brawser (ou plus) à intégrer, il suffit juste d'enrichir la première ligne de déclaration
Re: [..] Verification Process
Posté : lun. 25 oct. 2010 17:47
par sksbir
hop, je rajoute mon grain de sel :
ok pour le tableau à 2 dimensions, mais pourquoi utiliser stringsplit et tout ce code nécessaire pour passer de 1 à 2 dimensions, alors qu'il existe une fonction bien pratique dans autoit qui permet de déclarer directement un tableau à 2 dimensions avec des valeurs de départ dedans ?
dim tableau[x][y]=[ [valeur1,valeurA],[valeur2,valeurB]...etc...
Re: [..] Verification Process
Posté : lun. 25 oct. 2010 20:36
par sylvanie
Bonsoir,
c'est tout simplement pour faciliter l'ajout de plusieurs navigateurs dans le futur.
Avec cette méthode (certe plus chargée en code) on n'a qu'a ajouter le nom du browser dans la première ligne, sans se soucier de la dimension.
Ainsi on peut même faire cette déclaration dans un fichier texte afin de ne plus toucher au code du tout via un fileread.
Dans la méthode proposée, il faut à la fois modifier manuellement la dimension du tableau + l'ajout du nom.
La philosophie est que pour un script, moins il y a de modif à faire pour le faire évoluer, mieux c'est. Surtout quand on le reprends des mois plus tard ^^'
Re: [..] Verification Process
Posté : mer. 03 nov. 2010 08:15
par sksbir
Je comprends ton point de vue, car effectivement, même si remplacer N par N+1 dans la déclaration du tableau n'est pas sorcier, si on oublie la manip, ça passe à la compilation, mais pas à l'exécution...
En fait, idéalement, il faudrait pouvoir mettre -1 dans le dimensionnement d'un tableau de constante dont on initialise le contenu de façon à ne pas avoir à renseigner la dimension.
Mais ça demande une requête de modif pour autoit...
Re: [..] Verification Process
Posté : mer. 03 nov. 2010 08:46
par Tlem
Le mieux restera l'utilisation du
StringSplit().
En ce qui concerne le code de Sylvanie, comme le tableau n'utilise que deux colonnes, personnellement au lieu d'utiliser un tableau 2D, j'aurais utilisé deux tableaux 1D.
Code : Tout sélectionner
Global $liste_navigateur="iexplore.exe;chrome.exe;firefox.exe"
$liste_navigateur=StringSplit($liste_navigateur,";")
Global $etat_navigateur[UBound($liste_navigateur)]
Re: [..] Verification Process
Posté : mer. 03 nov. 2010 23:21
par alex1205
Salt Tlem.
Au lieu de faire :
Code : Tout sélectionner
[Global $liste_navigateur="iexplore.exe;chrome.exe;firefox.exe"
$liste_navigateur=StringSplit($liste_navigateur,";")
Global $etat_navigateur[UBound($liste_navigateur)
Fait ça
Code : Tout sélectionner
Global $liste_navigateur="iexplore.exe;chrome.exe;firefox.exe"
$liste_navigateur=StringSplit($liste_navigateur,";")
Global $etat_navigateur[[color=#FF0000]$liste_navigateur[0][/color]]
:
Re: [..] Verification Process
Posté : mer. 03 nov. 2010 23:27
par Tlem
Hé oui, mais non ...
N'est pas équivalent à
Faites un essais. Affichez les deux et vous comprendrez mieux.
