Page 1 sur 1
[R] Arrêter une action en cours lancer par un RunWait
Posté : ven. 08 févr. 2008 09:38
par Vins83
Bonjour à tous.
Sa a l'air bien bete comme ça,mais pas moyen de trouver.
Code : Tout sélectionner
#include <GUIConstants.au3>
GUICreate("Stop action en cours", 330, 60, -1, -1)
$button = GUICtrlCreateButton("Lancer notepad", 10, 10, 120, 40)
$exit = GUICtrlCreateButton("Stop action", 200, 10, 120, 40)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $button
RunWait("Notepad.exe", @WindowsDir)
Case $msg = $exit
Exit
EndSelect
WEnd
J'ai remarqué que lorsque que l'on voullait stoper une action en cours,il était impossible tant que celle ci n'était pas fini,et là sa me gene un peu.
Quelqu'un a t'il une solution?
Merci
Re: [..] Arreter une action en cours lancer par un runwait
Posté : ven. 08 févr. 2008 13:44
par ronin
salut
as tu essayé de mettre ça en deuxieme ligne juste sous le include ?
Re: [..] Arreter une action en cours lancer par un runwait
Posté : ven. 08 févr. 2008 15:39
par Vins83
Effectivement trés pratique,mais mon boutton quitter ne sert tjrs a rien.
Code : Tout sélectionner
#include <GUIConstants.au3>
HotKeySet("{ESC}", "Terminate")
GUICreate("Stop action en cours", 330, 60, -1, -1)
$button = GUICtrlCreateButton("Lancer notepad", 10, 10, 120, 40, $WS_EX_APPWINDOW)
$exit = GUICtrlCreateButton("Stop action", 200, 10, 120, 40, $WS_EX_APPWINDOW)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $button
RunWait("Notepad.exe", @WindowsDir)
Case $msg = $exit
Exit
EndSelect
WEnd
Func Terminate()
ProcessClose("Notepad.exe")
Exit 0
EndFunc ;==>Terminate
Peu etre modifier la fonction avec un AdlibEnable pour que l'action soit tjrs possible.
Je cherche encore un peu de ce coté là..
Merci quand meme.
Re: [..] Arreter une action en cours lancer par un runwait
Posté : ven. 08 févr. 2008 21:27
par Tlem
Il est effectivement possible, avec AdlibEnable de contourner le problème, mais à la base vous lancé le BlocNote avec la commande RunWait.
Or cette commande ne rendra la main au script que si vous fermer le BlocNote.
La solution serait de lancer le BlocNote par un simple Run (Ou encore mieux : ShellExecute), en récupèrent le PID de ce dernier (Pour le PID regarder la doc de la commande).
La commande Run lancera le BlocNote en vous retournant son PID, et le script reprendra la main pour la suite des opérations.
Avec ce fameux PID il vous sera possible de supprimer le processus du BlocNote, et donc de faire ce que vous rechercher.
Re: [..] Arreter une action en cours lancer par un runwait
Posté : sam. 09 févr. 2008 11:59
par sylvanie
Bonjour en coup de vent,
et voici une petite synthèse avec gestion de non relance:
Code : Tout sélectionner
#include <GUIConstants.au3>
AutoItSetOption("Onexitfunc","Bye")
GUICreate("Stop action en cours", 330, 60, -1, -1)
$button = GUICtrlCreateButton("Lancer notepad", 10, 10, 120, 40)
$exit = GUICtrlCreateButton("Stop action", 200, 10, 120, 40)
$pid=0
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $button
Lance_notepad()
Case $msg = $exit
Exit
EndSelect
WEnd
Func Lance_notepad()
If Verif_instance($pid)=0 Then
$pid=Run("Notepad.exe", @WindowsDir)
Else
MsgBox(0,"Instance de notepad existante","une instace a déjà été lancée")
EndIf
EndFunc
Func Verif_instance($local_pid)
If $pid=0 Or Not ProcessExists($pid) Then Return 0
Return 1
EndFunc
Func Bye()
ProcessClose($pid)
Exit 0
EndFunc
Re: [..] Arreter une action en cours lancer par un runwait
Posté : sam. 09 févr. 2008 12:11
par ani
Arrêter une action en cours lancer par un
runwait
et non un run
kill -9 (stop process) ^^'
As-tu lu l'aide vins ? la réponse y est..
Re: [..] Arreter une action en cours lancer par un runwait
Posté : sam. 09 févr. 2008 12:20
par Tlem
@ani
Tu ne peut arrêter le process lancer par un RunWait, puisque le script est en attente tant que le process n'est pas fermer/executer (Sauf si utilisation de AdlibEnable).
Re: [..] Arreter une action en cours lancer par un runwait
Posté : sam. 09 févr. 2008 12:22
par Vins83
Bonjour a tous,j'ai trouver ce que je cherché,merci a vous.
Le fait que je veuille que si je lance plusieurs opération a la suite (donc pas simultanément),il a fallu que je fasse ceux ci:
Code : Tout sélectionner
#include <GUIConstants.au3>
$PID = "notepad.exe"
$PID1 = "wordpad.exe"
GUICreate("Stop action en cours", 330, 80, -1, -1)
$button = GUICtrlCreateCheckbox("Lancer notepad", 10, 5, 100, 40, $WS_EX_APPWINDOW)
$button1 = GUICtrlCreateCheckbox("Lancer wordpad", 115, 5, 100, 40, $WS_EX_APPWINDOW)
$exit = GUICtrlCreateButton("Stop action", 220, 5, 100, 40, $WS_EX_APPWINDOW)
$lanceraction = GUICtrlCreateButton("Lancer action", 10, 50, 310, 30)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ProcessClose($PID)
ProcessClose($PID1)
ExitLoop
Case $msg = $lanceraction
If BitAND(GUICtrlRead($button), $GUI_CHECKED) Then
ShellExecute($PID)
EndIf
If BitAND(GUICtrlRead($button1), $GUI_CHECKED) Then
While 1
If Not ProcessExists($PID) Then ExitLoop
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ProcessClose($PID)
ProcessClose($PID1)
ExitLoop
Case $msg = $exit
ProcessClose($PID)
ProcessClose($PID1)
Exit
EndSelect
Sleep(0)
WEnd
ShellExecute($PID1)
EndIf
Case $msg = $exit
ProcessClose($PID)
ProcessClose($PID1)
Exit
EndSelect
WEnd
Un peu long a preimere vu,mais en incluant tout dans des fonctions,le tout peut etre beaucoup plus light..