PID.NET ... Cool !!

cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 - 29 juin 2005 à 12:08
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 - 29 juin 2005 à 13:59
Salut a tous,
voila, je vien de swicher du Vb6 au .NET et je dois concevoir une appli qui execute un .bat. Pas de probleme, j'utilise la fonction shell identique au Vb6. Une serie de commandes s'executes alors (dans le batch) et ce qu'il me faudrait, ce serait pouvoir détecter la fin de l'execution du .bat (c'est a dire la fermeture de la fenetre de commande ms-dos) voir meme mais pour le moment c'est optionnel pouvoir violament en interrompre l'execution.
Je me suis dit que ca devait pouvoir se gerer avec le PID retourné par la fonction shell() mais je suis incapable de trouver comment (je soupsone l'utilisation obligatoire des Api )
Une piste a me donner ? n'hesitez pas !

Merci d'avance,

AbriBus
_______________________________
La direction de la RATP vous rappelle que la
dégradation d'AbriBus est passible de lourdes
sanctions.
Ne dégradez pas les AbriBus. L'AbriBus est ton ami.

4 réponses

ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
29 juin 2005 à 12:53
Je sais, ça n'a rien à voir mais dit moi Mr RATP, la Pub, c'est pas considéré comme une dégradation ???



Pour ton problème, je ne peux pas te dire précisément mais en effet, je
ne vois guère que les API pour t'en sortir! Sinon, tu peux peut-être
(cf. les quelques sources à ce propos sur VBF) essayer d'utiliser une
variable d'environnement pour détecter la fin du batch !



Enfin, c'est une idée comme une autre!
0
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
29 juin 2005 à 13:31
Salut,
effectivement, variable d'environnement exploitable... mais bon, ca fait pas tres tres propre... j'aime pas trop trop ca. Bref, j'ai découvert depuis le premier post un outil fort sympatique qui a fait son apparition sous .NET, c'est l'objet Process qui permet de faire a peut pres ce que je voulais faire sauf un truc plutot important (je n'imagine pas que ca ne soit pas possible, j'ai pas encore du trouver l'astuce voila tout). Voila comment j'ai fait:

Dim monProcess As Process
monProcess.StartInfo().FileName = [CheminAccesBatch As String]
monProcess.Start()

apres quoi il suffit de faire un
monProcess.Kill()
pour "interrompre violamment" l'execution du batch
Le petit bémol pour l'instant, c'est que j'ai pas trouver comment vérifier préalablement a la commande .Start() si ce process existait deja (pour pas en lancer 2 en meme temps).

AbriBus
_______________________________
L'entreprise JCDecaux est priée de cesser
immédiatement la dégradation publicitaire de
nos Amis AbriBus. Merci de votre comprehension.
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
29 juin 2005 à 13:49
Dit, c'est bien la RATP qui a mandaté qui de droit pour permettre un espace d'affichage publicitaire non



Bon, moi je peux pas vraiment te dire car je bosse encore sous VB6,
mais à mon avis, y'a pas 36 solutions!!! Faut scanner tous les process!
Doit bien y'avoir un truc (une propriété, une collection, ...) du genre
: monProcess(Index).EnCours

Resterait plus qu'a faire comme avec les autres, un For ... Each ... et le tour serait joué


Enjoy

<hr size="2" width="100%">
(Si une réponse vous convient, cliquez sur son bouton "Accepter", c'est imp
0
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
29 juin 2005 à 13:59
Bah perso, je m'en fout un peu, j'utilise beaucoup la RATP mais j'ai jamais les yeux bien en face des trous... et meme en ce moment je lis la bible Vb.NET meme quand je marche... alors les pubs, bah ceux a qui ca plait pas, il y a qu'à pas les regardé (moi parfois je regarde les pub avec de jolies créatures dussus, généralement peu vétues )
Venant du monde de Vb6 aussi, j'avais deja pensé a cette solution que tu évoque mais ca ne me plaisiat pas vraiment. D'autant moins que j'ai trouver quelque chose de plus..."propre".
Etant donné que le .NET est STRICTEMENT orienté objet, quand j'invoque la commande .kill() je n'oublie pas de fixer l'objet monProcess à Nothing (null en Vb6)... comme ca avant d'invoquer un eventuel autre .Start() j'ai qu'à vérifier que monProcess vaut bien Nothing. Ce qui ne regle que partiellement le probleme puisqu'il s'en trouve déplacé à "Comment fixer monProcess à Nothing lorsque l'execution du batch se termine"... mais j'ai vu que je pouvais gerer des evenements sur l'objet Process... je desespere pas... je mettrais la solution quand je l'aurait trouvée... a moins que... quelqu'un d'autre ne s'en charge avant.
Bien tenté pour la collection mais c'est trop lourd tant à la création qu'à l'execution.

AbriBus
_______________________________
La direction de la RATP vous rappelle que la
dégradation d'AbriBus est passible de lourdes
sanctions.
Ne dégradez pas les AbriBus. L'AbriBus est ton ami.
0
Rejoignez-nous