Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2380 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Set ProcessID avec WMI ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Set ProcessID avec WMI ?

n°1080799
Orage878
Posté le 12-05-2005 à 14:09:14  profilanswer
 

Bonjour,
 
J'essai de lancer une application en lui attribuant un PID prédéfini mais sans succès, je ne sais pas d'ailleurs si c'est techniquement possible avec WMI.
 
Quelqu'un aurait il une idée ?
 

Code :
  1. Const HIDDEN_WINDOW = 1
  2. strComputer = "."
  3. Set objWMIService = GetObject("winmgmts:" _
  4. & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
  5. Set objStartup = objWMIService.Get("Win32_ProcessStartup" )
  6. Set objConfig = objStartup.SpawnInstance_
  7. objConfig.ShowWindow = HIDDEN_WINDOW
  8. Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process" )
  9. IntProcessID = objProcess.ProcessID(900)
  10. objProcess.Create "notepad.exe", Null, objConfig, IntProcessID
  11. Wscript.Echo "notepad.exe demarre avec un process ID de " _
  12. & IntProcessID & "."


 
ça compile mais en aucun cas le PID est égal à 900...

mood
Publicité
Posté le 12-05-2005 à 14:09:14  profilanswer
 

n°1080822
AlainTech
Pas trouvé? Cherche encore!
Posté le 12-05-2005 à 14:25:42  profilanswer
 

C'est dans IntProcessID que tu récupères le ProcessID donné par l'OS.


Message édité par AlainTech le 12-05-2005 à 14:25:58

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1080833
Orage878
Posté le 12-05-2005 à 14:33:36  profilanswer
 

Merci pour ta réponse Alain.
 
C'est bien ce que j'avais cru comprendre : IntProcessID me permet juste de récupérer le PID mais comment faire alors pour forcer ce PID dès sa création ?
 
A ma connaissance il n'y a pas de fonction Set ProcessID, bref j'ai un peu de mal à entrevoir une solution.

n°1080836
AlainTech
Pas trouvé? Cherche encore!
Posté le 12-05-2005 à 14:34:55  profilanswer
 

C'est l'OS qui donne le ProcessId.
 
N'essaye pas de trouver à le contourner, c'est comme ça.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1080846
Orage878
Posté le 12-05-2005 à 14:44:58  profilanswer
 

Ok donc si je comprends bien je n'ai aucun moyen de prédéfinir le PID et donc de lancer un process avec un PID de mon choix.
 
Bon cela me pose donc un sacré problème.
 
Merci en tout cas Alain  :hello:

n°1081028
AlainTech
Pas trouvé? Cherche encore!
Posté le 12-05-2005 à 16:06:42  profilanswer
 

Pourquoi cela te pose-t-il un problème?
 
Je suppose que tu veux pouvoir agir sur ce process. Donc, il te suffit de récupérer le PID au lancement et t'en servir par la suite.


Message édité par AlainTech le 12-05-2005 à 16:07:15

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1081661
Orage878
Posté le 13-05-2005 à 00:36:23  profilanswer
 

Bien je vais essayer de faire simple et clair.
 
Je suis sys op de serveurs de jeux. Certain serveurs sont sous windows 2k server.
Les joueurs controlent l'arrêt et le lancement des jeux via une interface en PHP qui en fin de chaine lance ou coupe le jeu via un start.vbs et stop.vbs quelque peu identiques au code ci-dessus.
 
Lorsqu'un jeu est installé plusieurs fois sur une meme machine j'avais l'habitude de renommer les *.exe pour les distinguer.
 
Ainsi et à titre d'exemple le stop.vbs du jeu numero 1 ressemble à ceci :
 

Code :
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" _
  3.     & "{impersonationLevel=impersonate}!\\" _
  4.     & strComputer & "\root\cimv2" )
  5. Set colProcessList = objWMIService.ExecQuery _
  6.     ("Select * from Win32_Process Where Name = 'jeux1.exe'" )
  7. For Each objProcess in colProcessList
  8.     objProcess.Terminate()
  9. Next


 
Aujourd'hui je suis face à un jeu dont il est impossible de renommer l'executable, sinon le jeu ne se lance pas. Mes Stop.vbs sont donc caduques car en executant un stop.vbs je coupe tous les jeux et non seulement celui concerné...
 
J'espérais donc pouvoir lancer le jeu en lui attribuant un PID prédéfini et ainsi le couper en utilisant son PID.
 
Il va donc falloir que je trouve une autre solution...
 
Je pense éventuellement, une fois le jeu lancé, à enregistrer le PID du jeu numero 1 dans un fichier tiers et le récupérer ensuite pour pouvoir le couper ... Je pourrais éventuellement enregistrer le PID dans une BDD... Bref voilà l''histoire à l'instant présent...


Message édité par Orage878 le 13-05-2005 à 00:45:20
n°1081731
knakes
Posté le 13-05-2005 à 07:14:01  profilanswer
 

Mais si tu connias le fichier exe, récupère son PID avec un script, su style un Sleep pdt 5s puis le script cherche dans les exécutions en cours le PID correspondant au jeu. Non ?


---------------
now : do nothing
n°1081787
AlainTech
Pas trouvé? Cherche encore!
Posté le 13-05-2005 à 09:09:58  profilanswer
 

knakes a écrit :

Mais si tu connias le fichier exe, récupère son PID avec un script, su style un Sleep pdt 5s puis le script cherche dans les exécutions en cours le PID correspondant au jeu. Non ?


Son problème, c'est qu'il peut avoir plusieurs instances du même jeu.
Il doit donc garder une trace du PID attribué au lancement.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1082155
knakes
Posté le 13-05-2005 à 13:18:20  profilanswer
 

ben justement
tu redirige le raccourcis vers un srcipt
qui va regarder le PID -> le pid du jeu lancé.
 
Le soucis, c'est que les joueurs ne peuvent passer que par là.


---------------
now : do nothing

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Set ProcessID avec WMI ?

 

Sujets relatifs
Comportement des Set... pas compris...[script WMI] pb : Permission refusé
WMI - WQL : Groupes et utilisateurs ... ?ini_set
[WMI] Acceder aux parametres hardware d'un PCset_time_limit et include...???
Dominating set dans un graphe.php set_time_limit
[ Dos Batch ]Set & Typeputain le WMi en c++
Plus de sujets relatifs à : Set ProcessID avec WMI ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)