Bonjour,
En lançant un programme par la fonction RUN on obtient le PID du process.
J'aimerais ensuite pouvoir fermer ce programme mais je préfèrerais le faire avec Winclose qu'avec Processclose qui me parait un peu trop violent.
Seulement Winclose n'accepte visiblement pas les PID mais plutôt les Handle (j'aimerais éviter de passer par le nom de la fenêtre, ce nom peut varier d'un poste à l'autre).
Et il possible de récupérer le Handle d'un programme lancé avec RUN ou de transormer un PID en Handle.
Merci de votre aide.
[R] Connaître le Handle à partir d'un process
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
eric
- Niveau 5

- Messages : 177
- Enregistré le : sam. 21 mars 2009 17:57
- Localisation : Bretagne
- Status : Hors ligne
[R] Connaître le Handle à partir d'un process
Modifié en dernier par eric le mar. 13 oct. 2009 10:11, modifié 1 fois.
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Connaître le Handle à partir d'un process
Vous pouvez essayer ceci :
1 - Récupérer la liste des fenêtres avec Winlist.
2 - Utiliser le tableau pour en extraire grâce à une boucle le titre des fenêtres afin de comparer grâce à WinGetProcess le PID de votre application et celui renvoyé par le WinGetProcess.
1 - Récupérer la liste des fenêtres avec Winlist.
2 - Utiliser le tableau pour en extraire grâce à une boucle le titre des fenêtres afin de comparer grâce à WinGetProcess le PID de votre application et celui renvoyé par le WinGetProcess.
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é".
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é".
-
eric
- Niveau 5

- Messages : 177
- Enregistré le : sam. 21 mars 2009 17:57
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Connaître le Handle à partir d'un process
Bonjour Tlem et merci pour cette solution.
Je pensais qu'on pouvais faire plus court mais bon.
En gros cela donne quelque chose comme ceci.
Par contre il faut respecter le fait de ne pas tenir compte des fenêtres invisibles et sans nom puisque il y a plusieurs fenêtres qui possèdent le même PID.
Je pensais qu'on pouvais faire plus court mais bon.
En gros cela donne quelque chose comme ceci.
Code : Tout sélectionner
$pidprogramme = run ("notepad.exe","",@SW_MAXIMIZE) ; lancer le programme
sleep(2000)
$listeprog = WinList() ; lister tous les programmes ouverts
For $i = 1 to $listeprog[0][0]
$verifvisible = WinGetState ($listeprog[$i][0]) ; vérifier l'état des fenêtres
Select
case BitAND ($verifvisible,2) And $listeprog[$i][0] <> "" ; ne pas tenir compte des fenêtres invisibles et sans nom
$pid = WinGetProcess($listeprog[$i][0]) ; obtenir le PID des programmes
if $pid = $pidprogramme Then ; comparer le PID des programme avec celui du programme et si PID trouvé fermer le programme
WinClose($listeprog[$i][1])
EndIf
EndSelect
Next