Ma question :
après cela, comment savoir quand la commande zzzzzz est terminée (donc la
fenetre de commande fermée) ?
Je pourrais certes utiliser le 3ème param du wsh.run pour que la commande ne
rende la main que quand elle a fini, mais comme je doit simuler la saisie
d'un mot de passe, ca ne convient pas.
Existe-t-il un moyen de balayer les fenêtres ouvertes et vérifier si celle
lancée, ici nommée runas, est toujours présente ?
Ma question : après cela, comment savoir quand la commande zzzzzz est terminée (donc la fenetre de commande fermée) ? Je pourrais certes utiliser le 3ème param du wsh.run pour que la commande ne rende la main que quand elle a fini, mais comme je doit simuler la saisie d'un mot de passe, ca ne convient pas. Existe-t-il un moyen de balayer les fenêtres ouvertes et vérifier si celle lancée, ici nommée runas, est toujours présente ?
Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement préférable de tester l'existence du processus. Et pour cela, il suffit de faire appel à WMI et la classe "Win32_Process", en énumérant tous les processus.
Par exemple :
... Set net = Wscript.CreateObject("WScript.Network") Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Do Set System=GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).InstancesOf("Win32_Process") encoursúlse for each Process in System If Strcomp(Process.Name,NomProc,VBTextCompare)<>0 Then encours=true exit for end if next if encours then WScript.Sleep 200 'tempo de 200 ms pour souffler un peu! loop until not encours
...
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
"Jean-Claude" <repondre_en_forum@orange.fr> a écrit dans le message de
groupe de discussion : 4b8aa313$0$17877$ba4acef3@reader.news.orange.fr...
Bonjour,
j'utilise un script VBS pour exécuter un traitement zzzzzz qui doit
s'exécuter en administrateur dans une fenetre de commande :
Ma question :
après cela, comment savoir quand la commande zzzzzz est terminée (donc la
fenetre de commande fermée) ?
Je pourrais certes utiliser le 3ème param du wsh.run pour que la commande
ne rende la main que quand elle a fini, mais comme je doit simuler la
saisie d'un mot de passe, ca ne convient pas.
Existe-t-il un moyen de balayer les fenêtres ouvertes et vérifier si celle
lancée, ici nommée runas, est toujours présente ?
Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le
processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement
préférable de tester l'existence du processus.
Et pour cela, il suffit de faire appel à WMI et la classe "Win32_Process",
en énumérant tous les processus.
Par exemple :
...
Set net = Wscript.CreateObject("WScript.Network")
Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Do
Set System=GetObject("winmgmts:{impersonationLevel=impersonate}!//" &
Computer).InstancesOf("Win32_Process")
encoursúlse
for each Process in System
If Strcomp(Process.Name,NomProc,VBTextCompare)<>0 Then
encours=true
exit for
end if
next
if encours then WScript.Sleep 200 'tempo de 200 ms pour souffler un
peu!
loop until not encours
...
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Ma question : après cela, comment savoir quand la commande zzzzzz est terminée (donc la fenetre de commande fermée) ? Je pourrais certes utiliser le 3ème param du wsh.run pour que la commande ne rende la main que quand elle a fini, mais comme je doit simuler la saisie d'un mot de passe, ca ne convient pas. Existe-t-il un moyen de balayer les fenêtres ouvertes et vérifier si celle lancée, ici nommée runas, est toujours présente ?
Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement préférable de tester l'existence du processus. Et pour cela, il suffit de faire appel à WMI et la classe "Win32_Process", en énumérant tous les processus.
Par exemple :
... Set net = Wscript.CreateObject("WScript.Network") Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Do Set System=GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).InstancesOf("Win32_Process") encoursúlse for each Process in System If Strcomp(Process.Name,NomProc,VBTextCompare)<>0 Then encours=true exit for end if next if encours then WScript.Sleep 200 'tempo de 200 ms pour souffler un peu! loop until not encours
...
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Jean-Claude
> Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement préférable de tester l'existence du processus. Et pour cela, il suffit de faire appel à WMI et la classe "Win32_Process", en énumérant tous les processus.
Par exemple :
... Set net = Wscript.CreateObject("WScript.Network") Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Merci, mais comment connaitre le nom de mon processus ? Puisque je lance une fenetre de commande, s'agit-il de cmd.exe ? Mais je risque d'en avoir plusieurs, d'où l'intérêt d'être parti sur le nom des fenêtres, car je donne moi-meme le nom à ma fenetre, que je peux donc identifier de manière unique. JC
> Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le
processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement
préférable de tester l'existence du processus.
Et pour cela, il suffit de faire appel à WMI et la classe
"Win32_Process", en énumérant tous les processus.
Par exemple :
...
Set net = Wscript.CreateObject("WScript.Network")
Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Merci, mais comment connaitre le nom de mon processus ?
Puisque je lance une fenetre de commande, s'agit-il de cmd.exe ? Mais je
risque d'en avoir plusieurs, d'où l'intérêt d'être parti sur le nom des
fenêtres, car je donne moi-meme le nom à ma fenetre, que je peux donc
identifier de manière unique.
JC
> Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement préférable de tester l'existence du processus. Et pour cela, il suffit de faire appel à WMI et la classe "Win32_Process", en énumérant tous les processus.
Par exemple :
... Set net = Wscript.CreateObject("WScript.Network") Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Merci, mais comment connaitre le nom de mon processus ? Puisque je lance une fenetre de commande, s'agit-il de cmd.exe ? Mais je risque d'en avoir plusieurs, d'où l'intérêt d'être parti sur le nom des fenêtres, car je donne moi-meme le nom à ma fenetre, que je peux donc identifier de manière unique. JC
Jean-Claude BELLAMY
"Jean-Claude" a écrit dans le message de groupe de discussion : 4b8c119c$0$17868$
Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement préférable de tester l'existence du processus. Et pour cela, il suffit de faire appel à WMI et la classe "Win32_Process", en énumérant tous les processus.
Par exemple :
... Set net = Wscript.CreateObject("WScript.Network") Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Merci, mais comment connaitre le nom de mon processus ?
????????????????
Tu sais bien quand même ce que tu lances , non ? Sinon, c'est de la schizophrénie ! ;-)
Le processus lancé, c'est ce qu'il y a dans le terme "zzzzzz" (wsh.run runexe & " /c title runas & runas.exe /env /user:" & admin & " """ & zzzzzz & """")
Qu'y a-t-il dedans ?
Puisque je lance une fenetre de commande, s'agit-il de cmd.exe ?
NON, puisque tu te sers de CMD ici uniquement pour exécuter RUNAS qui te sert, à son tour, à exécuter AUTRE chose !
Mais je risque d'en avoir plusieurs, d'où l'intérêt d'être parti sur le nom des fenêtres, car je donne moi-meme le nom à ma fenetre, que je peux donc identifier de manière unique.
Sois un peu plus COMPLET/CONCRET/CONCIS/PRÉCIS, et ça ira tout de suite mieux! Que veux tu faire EX-AC-TE-MENT ?
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
"Jean-Claude" <repondre_en_forum@orange.fr> a écrit dans le message de
groupe de discussion : 4b8c119c$0$17868$ba4acef3@reader.news.orange.fr...
Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le
processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement
préférable de tester l'existence du processus.
Et pour cela, il suffit de faire appel à WMI et la classe
"Win32_Process", en énumérant tous les processus.
Par exemple :
...
Set net = Wscript.CreateObject("WScript.Network")
Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Merci, mais comment connaitre le nom de mon processus ?
????????????????
Tu sais bien quand même ce que tu lances , non ?
Sinon, c'est de la schizophrénie ! ;-)
Le processus lancé, c'est ce qu'il y a dans le terme "zzzzzz"
(wsh.run runexe & " /c title runas & runas.exe /env /user:" & admin & " """
& zzzzzz & """")
Qu'y a-t-il dedans ?
Puisque je lance une fenetre de commande, s'agit-il de cmd.exe ?
NON, puisque tu te sers de CMD ici uniquement pour exécuter RUNAS qui te
sert, à son tour, à exécuter AUTRE chose !
Mais je risque d'en avoir plusieurs, d'où l'intérêt d'être parti sur le
nom des fenêtres, car je donne moi-meme le nom à ma fenetre, que je peux
donc identifier de manière unique.
Sois un peu plus COMPLET/CONCRET/CONCIS/PRÉCIS, et ça ira tout de suite
mieux!
Que veux tu faire EX-AC-TE-MENT ?
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
"Jean-Claude" a écrit dans le message de groupe de discussion : 4b8c119c$0$17868$
Plutôt que la fenêtre, qui est un paramètre "hasardeux" (suivant le processus, il peut ne pas y avoir de fenêtre ouverte!), il est nettement préférable de tester l'existence du processus. Et pour cela, il suffit de faire appel à WMI et la classe "Win32_Process", en énumérant tous les processus.
Par exemple :
... Set net = Wscript.CreateObject("WScript.Network") Computer=net.ComputerName 'nom de l'ordinateur local
NomProc="......." ' le nom du processus à surveiller
Merci, mais comment connaitre le nom de mon processus ?
????????????????
Tu sais bien quand même ce que tu lances , non ? Sinon, c'est de la schizophrénie ! ;-)
Le processus lancé, c'est ce qu'il y a dans le terme "zzzzzz" (wsh.run runexe & " /c title runas & runas.exe /env /user:" & admin & " """ & zzzzzz & """")
Qu'y a-t-il dedans ?
Puisque je lance une fenetre de commande, s'agit-il de cmd.exe ?
NON, puisque tu te sers de CMD ici uniquement pour exécuter RUNAS qui te sert, à son tour, à exécuter AUTRE chose !
Mais je risque d'en avoir plusieurs, d'où l'intérêt d'être parti sur le nom des fenêtres, car je donne moi-meme le nom à ma fenetre, que je peux donc identifier de manière unique.
Sois un peu plus COMPLET/CONCRET/CONCIS/PRÉCIS, et ça ira tout de suite mieux! Que veux tu faire EX-AC-TE-MENT ?
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr