Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème de getobject

5 réponses
Avatar
Georges MAUREL
Bonjour à tous,
voila mon problème : j'arrive avec la commande

GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from
Win32_Process")

à récupérer la collection d'objets contenant les process process lancés;
seulement je voudrais pouvoir faire un getobject sur un process afin de
prendre la main dessus et utiliser ses propriétés et méthodes.

Par exemple, si un word est lancé, je voudrais pouvoir l'utiliser.

Pourriez-vous m'aider et me dire comment faire ?

Merci d'avance

5 réponses

Avatar
Jacques Barathon [MS]
"Georges MAUREL" <georges.maurel_at_free.fr> wrote in message
news:%23M6%
Bonjour à tous,
voila mon problème : j'arrive avec la commande

GetObject("winmgmts:.rootcimv2").ExecQuery("Select * from
Win32_Process")

à récupérer la collection d'objets contenant les process process lancés;
seulement je voudrais pouvoir faire un getobject sur un process afin de
prendre la main dessus et utiliser ses propriétés et méthodes.

Par exemple, si un word est lancé, je voudrais pouvoir l'utiliser.

Pourriez-vous m'aider et me dire comment faire ?


Simplement en complétant ta requête: "select * from Win32_Process where Name
= 'winword.exe' ".
Par exemple si tu veux fermer tous les process winword.exe en cours
d'exécution:

--- couper ici ---
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Winword.exe'")
For Each objProcess in colProcesses
objProcess.Terminate()
Next
--- couper ici ---

Jacques

Avatar
Georges MAUREL
Bonjour,
Merci pour cette réponse mais cela ne correspond pas tout à fait à ce que je
désire faire.
En fait en utilisant votre exemple, on récupère une collection d'objets
"process" et donc on ne peut accéder qu'aux propriétés et méthodes de ces
objets.
Ce que je voudrais faire, c'est à partir de la collection récupérer (qui me
permet donc de savoir si un programme est lancé ou pas), faire un getobject
sur un des programmes lancés afin d'accéder à ces propriétés et méthodes. Le
problème c'est que GetObject nécessite de connaitre la classe de l'objet
(Ex : "Excel.Application" ). Mais Win32_Process ne donne pas cette
information. Donc comment faire pour faire pour récupérer cette information
et faire ce getobject pour n'importe quel process ?
Merci d'avance pour vos éclairages.


"Jacques Barathon [MS]" a écrit dans le
message de news:
"Georges MAUREL" <georges.maurel_at_free.fr> wrote in message
news:%23M6%
Bonjour à tous,
voila mon problème : j'arrive avec la commande

GetObject("winmgmts:.rootcimv2").ExecQuery("Select * from
Win32_Process")

à récupérer la collection d'objets contenant les process process lancés;
seulement je voudrais pouvoir faire un getobject sur un process afin de
prendre la main dessus et utiliser ses propriétés et méthodes.

Par exemple, si un word est lancé, je voudrais pouvoir l'utiliser.

Pourriez-vous m'aider et me dire comment faire ?


Simplement en complétant ta requête: "select * from Win32_Process where
Name

= 'winword.exe' ".
Par exemple si tu veux fermer tous les process winword.exe en cours
d'exécution:

--- couper ici ---
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Winword.exe'")
For Each objProcess in colProcesses
objProcess.Terminate()
Next
--- couper ici ---

Jacques





Avatar
Martin CLAVREUIL
bonjour,

de toute facon, en faisant un getobject claqssname ont crée une nouvelle
instance du prog, on ne le pilote pas. sinon il ne me semble pas que ce
genre de prise de controle soit possible avec la sécu IPC de Windows. il
faut avoir instancié soit même un process pour pouvoir le controler (à
vérifier);



"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
Merci pour cette réponse mais cela ne correspond pas tout à fait à ce que
je

désire faire.
En fait en utilisant votre exemple, on récupère une collection d'objets
"process" et donc on ne peut accéder qu'aux propriétés et méthodes de ces
objets.
Ce que je voudrais faire, c'est à partir de la collection récupérer (qui
me

permet donc de savoir si un programme est lancé ou pas), faire un
getobject

sur un des programmes lancés afin d'accéder à ces propriétés et méthodes.
Le

problème c'est que GetObject nécessite de connaitre la classe de l'objet
(Ex : "Excel.Application" ). Mais Win32_Process ne donne pas cette
information. Donc comment faire pour faire pour récupérer cette
information

et faire ce getobject pour n'importe quel process ?
Merci d'avance pour vos éclairages.


"Jacques Barathon [MS]" a écrit dans le
message de news:
"Georges MAUREL" <georges.maurel_at_free.fr> wrote in message
news:%23M6%
Bonjour à tous,
voila mon problème : j'arrive avec la commande

GetObject("winmgmts:.rootcimv2").ExecQuery("Select * from
Win32_Process")

à récupérer la collection d'objets contenant les process process
lancés;



seulement je voudrais pouvoir faire un getobject sur un process afin
de



prendre la main dessus et utiliser ses propriétés et méthodes.

Par exemple, si un word est lancé, je voudrais pouvoir l'utiliser.

Pourriez-vous m'aider et me dire comment faire ?


Simplement en complétant ta requête: "select * from Win32_Process where
Name

= 'winword.exe' ".
Par exemple si tu veux fermer tous les process winword.exe en cours
d'exécution:

--- couper ici ---
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer &
"rootcimv2")


Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Winword.exe'")
For Each objProcess in colProcesses
objProcess.Terminate()
Next
--- couper ici ---

Jacques









Avatar
Georges MAUREL
Bonjour,
Désolé Martin de vous contredire, mais si on lance excel par exemple et que
par un script vbs on fait

Set objet = GetObject(,"Excel.Application")
objet.caption = "Test"

Alors le caption et bien modifié. On peut ainsi accéder aux propriétés et
méthodes de l'objet. Donc, je voulais automatiser cela pour, à partir de la
collection des process, accéder un objet sans connaitre son classname(à
partir de son processid par exemple) , ou en le récupérant (mais cela je ne
sais pas comment faire)



"Martin CLAVREUIL"
a écrit dans le
message de news:
bonjour,

de toute facon, en faisant un getobject claqssname ont crée une nouvelle
instance du prog, on ne le pilote pas. sinon il ne me semble pas que ce
genre de prise de controle soit possible avec la sécu IPC de Windows. il
faut avoir instancié soit même un process pour pouvoir le controler (à
vérifier);



"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
Merci pour cette réponse mais cela ne correspond pas tout à fait à ce
que


je
désire faire.
En fait en utilisant votre exemple, on récupère une collection d'objets
"process" et donc on ne peut accéder qu'aux propriétés et méthodes de
ces


objets.
Ce que je voudrais faire, c'est à partir de la collection récupérer (qui
me

permet donc de savoir si un programme est lancé ou pas), faire un
getobject

sur un des programmes lancés afin d'accéder à ces propriétés et
méthodes.


Le
problème c'est que GetObject nécessite de connaitre la classe de
l'objet


(Ex : "Excel.Application" ). Mais Win32_Process ne donne pas cette
information. Donc comment faire pour faire pour récupérer cette
information

et faire ce getobject pour n'importe quel process ?
Merci d'avance pour vos éclairages.


"Jacques Barathon [MS]" a écrit dans le
message de news:
"Georges MAUREL" <georges.maurel_at_free.fr> wrote in message
news:%23M6%
Bonjour à tous,
voila mon problème : j'arrive avec la commande

GetObject("winmgmts:.rootcimv2").ExecQuery("Select * from
Win32_Process")

à récupérer la collection d'objets contenant les process process
lancés;



seulement je voudrais pouvoir faire un getobject sur un process afin
de



prendre la main dessus et utiliser ses propriétés et méthodes.

Par exemple, si un word est lancé, je voudrais pouvoir l'utiliser.

Pourriez-vous m'aider et me dire comment faire ?


Simplement en complétant ta requête: "select * from Win32_Process
where



Name
= 'winword.exe' ".
Par exemple si tu veux fermer tous les process winword.exe en cours
d'exécution:

--- couper ici ---
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer &
"rootcimv2")


Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Winword.exe'")
For Each objProcess in colProcesses
objProcess.Terminate()
Next
--- couper ici ---

Jacques













Avatar
Martin CLAVREUIL
re;

ben je maintient, dans ce cas l'instance que vous controlez est celle que
vous avez crée, pas une instance préexistante.

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
Désolé Martin de vous contredire, mais si on lance excel par exemple et
que

par un script vbs on fait

Set objet = GetObject(,"Excel.Application")
objet.caption = "Test"

Alors le caption et bien modifié. On peut ainsi accéder aux propriétés et
méthodes de l'objet. Donc, je voulais automatiser cela pour, à partir de
la

collection des process, accéder un objet sans connaitre son classname(à
partir de son processid par exemple) , ou en le récupérant (mais cela je
ne

sais pas comment faire)



"Martin CLAVREUIL"
a écrit dans
le

message de news:
bonjour,

de toute facon, en faisant un getobject claqssname ont crée une nouvelle
instance du prog, on ne le pilote pas. sinon il ne me semble pas que ce
genre de prise de controle soit possible avec la sécu IPC de Windows. il
faut avoir instancié soit même un process pour pouvoir le controler (à
vérifier);



"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
Merci pour cette réponse mais cela ne correspond pas tout à fait à ce
que


je
désire faire.
En fait en utilisant votre exemple, on récupère une collection
d'objets



"process" et donc on ne peut accéder qu'aux propriétés et méthodes de
ces


objets.
Ce que je voudrais faire, c'est à partir de la collection récupérer
(qui



me
permet donc de savoir si un programme est lancé ou pas), faire un
getobject

sur un des programmes lancés afin d'accéder à ces propriétés et
méthodes.


Le
problème c'est que GetObject nécessite de connaitre la classe de
l'objet


(Ex : "Excel.Application" ). Mais Win32_Process ne donne pas cette
information. Donc comment faire pour faire pour récupérer cette
information

et faire ce getobject pour n'importe quel process ?
Merci d'avance pour vos éclairages.


"Jacques Barathon [MS]" a écrit dans
le



message de news:
"Georges MAUREL" <georges.maurel_at_free.fr> wrote in message
news:%23M6%
Bonjour à tous,
voila mon problème : j'arrive avec la commande

GetObject("winmgmts:.rootcimv2").ExecQuery("Select * from
Win32_Process")

à récupérer la collection d'objets contenant les process process
lancés;



seulement je voudrais pouvoir faire un getobject sur un process
afin





de
prendre la main dessus et utiliser ses propriétés et méthodes.

Par exemple, si un word est lancé, je voudrais pouvoir l'utiliser.

Pourriez-vous m'aider et me dire comment faire ?


Simplement en complétant ta requête: "select * from Win32_Process
where



Name
= 'winword.exe' ".
Par exemple si tu veux fermer tous les process winword.exe en cours
d'exécution:

--- couper ici ---
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer &
"rootcimv2")


Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Winword.exe'")
For Each objProcess in colProcesses
objProcess.Terminate()
Next
--- couper ici ---

Jacques