Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Kill d'un process (CITRIX / PB 7 / WINDOWS 2000/XP)

#1 27-03-2008 17:15:54

sbouvetJD  
Chasseur d'y voir ?
Lieu: LYON
Date d'inscription: 29-03-2007
Messages: 185
Pépites: 147,483,921
Banque: 13,317,684,827,902,404
Site web

[RESOLU] Kill d'un process (CITRIX / PB 7 / WINDOWS 2000/XP)

Bonjour,

J'exécute à l'ouverture de l'application sur la station l'appel à un composant présent sur le serveur CITRIX :

Code: pb

OleObject  lole_appli

lole_appli = CREATE OleObject
lole_appli.ConnectToNewObject("WScript.Shell")

lole_appli.Run("MonAppli")

J'aimerais killer MonAppli à la fermeture de l'application principale. On m'a conseillé de récupérer le ProcessID de MonAppli et ensuite d'utiliser une méthode EndProcess. D'accord, mais comment récupérer le PID de MonAppli ? Je pense que le problème est le même que ce soit sous CITRIX ou en C/S traditionnel (mais je peux me tromper ;))

Dernière modification par sbouvetJD (31-03-2008 11:22:25)

Hors ligne

 

#2 27-03-2008 17:39:48

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] Kill d'un process (CITRIX / PB 7 / WINDOWS 2000/XP)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 28-03-2008 14:57:34

sbouvetJD  
Chasseur d'y voir ?
Lieu: LYON
Date d'inscription: 29-03-2007
Messages: 185
Pépites: 147,483,921
Banque: 13,317,684,827,902,404
Site web

Re: [RESOLU] Kill d'un process (CITRIX / PB 7 / WINDOWS 2000/XP)

J'ai un message d'erreur "Error calling external object eval". J'avais essayé à tout hasard la méthode du topic 186 qui permet de vérifier si un exe est déjà lancé ou non, mais là aussi j'avais une erreur "Error calling external object count... Je continue à creuser...

Hors ligne

 

#4 28-03-2008 16:17:03

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 30-05-2006
Messages: 4685
Pépites: 1,025
Banque: 2,147,483,647
Site web

Re: [RESOLU] Kill d'un process (CITRIX / PB 7 / WINDOWS 2000/XP)

regardes mon outil  findpick...
il y a un bout de script qui te permet de localiser tout pid d'un programme pb (que ce soit en runtime ou via le mode dev)...
avec ca, tu pourras l'adapter ,et tu pourras ainsi killer ton process.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#5 28-03-2008 17:23:10

sbouvetJD  
Chasseur d'y voir ?
Lieu: LYON
Date d'inscription: 29-03-2007
Messages: 185
Pépites: 147,483,921
Banque: 13,317,684,827,902,404
Site web

Re: [RESOLU] Kill d'un process (CITRIX / PB 7 / WINDOWS 2000/XP)

Bon j'ai découvert mon erreur : cela provient du fait que j'essayais de filtrer sur le propriétaire du process :
Select * from Win32_Process where Username = "UserName"
Or Username n'est pas une propriété de Win32_Process, il faut que je passe par getOwner... La suite dans quelques instants.
Merci Pick ouic pour l'aide que findpick m'a apportée !! (Eh ! Ma grand-mère habite à Massy !! )

Hors ligne

 

#6 31-03-2008 11:20:47

sbouvetJD  
Chasseur d'y voir ?
Lieu: LYON
Date d'inscription: 29-03-2007
Messages: 185
Pépites: 147,483,921
Banque: 13,317,684,827,902,404
Site web

Re: [RESOLU] Kill d'un process (CITRIX / PB 7 / WINDOWS 2000/XP)

La solution :

Code: pb

String   ls_username, ls_code
UO_WFApi  uo_citrix
Integer  li_ret
OleObject  lole_appli, lole_mssc
Any   la_res
      
lole_appli = CREATE OleObject
uo_citrix = Create UO_WFApi
lole_mssc = CREATE OleObject

li_ret = lole_appli.ConnectToNewObject("WScript.Shell")
li_ret = lole_mssc.ConnectToNewObject( "MSScriptControl.ScriptControl" )

ls_username = uo_citrix.uf_getinfosession("username")

lole_mssc.language = "VBScript"
        
ls_code = "function services() ~r~n" &
  + "strNameOfUser = ~"~"~r~n" &
  + "s = ~"~"~r~n" &  
  + "Set colProcesses = GetObject(~"winmgmts:{impersonationLevel=impersonate}!\\" + NomServeurCitrix + "\root\cimv2~").ExecQuery(~"Select * from Win32_Process where Name='" + MonProcess + "'~")~r~n" &
  + "For Each objProcess in colProcesses~r~n" &
  + "ret = objProcess.GetOwner(strNameOfUser)~r~n" &
  + "If ret <> 0 Then~r~n" &
  + "s = s & ~"Aucun,~"~r~n" &
  + "Else~r~n" &
  + "s = s & strNameOfUser & ~",~"~r~n" &
  + "End If~r~n" &
  + "Next~r~n" &
  + "services=s~r~n" &
  + "end function"

lole_mssc.AddCode(ls_code)             
la_res = lole_mssc.Eval("services()")
lole_mssc.DisconnectObject()
        
If Pos(String(la_res), ls_username, 1) = 0 Then
  li_ret = lole_appli.Run(MonProcess)  
End If
  
DESTROY lole_mssc
DESTROY lole_appli


Bon, ça le kill pas, mais ça évite d'en rouvrir un !

Dernière modification par sbouvetJD (31-03-2008 11:23:07)

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Kill d'un process (CITRIX / PB 7 / WINDOWS 2000/XP)

Pied de page des forums

Propulsé par FluxBB 1.2.22