Execution d'une application, traitement en temps réèl du retour et envoie de don
Cseb1
Messages postés3Date d'inscriptionmardi 27 octobre 2009StatutMembreDernière intervention27 octobre 2009
-
27 oct. 2009 à 09:44
Cseb1
Messages postés3Date d'inscriptionmardi 27 octobre 2009StatutMembreDernière intervention27 octobre 2009
-
27 oct. 2009 à 10:32
Bonjour à tous,
J'ai un problème avec la commande proc.Start()
Suite à un click bouton, j'utilise un proc.Start()qui exécute une application. Mon problème vient du fait que tant que l'application ne s'est pas terminée, je ne peux pas traiter la sortie. Par conséquent, si l'application demande un mot de passe, j'ai une fenêtre dos qui reste inerte et à laquelle, je ne peux pas passer quoi que se soit. Comment faire pour interagir avec ce logiciel ?
Voici mon code. Je vérifie si un mot de passe est demandé. Si il l'est, je fait alors apparaitre une fenêtre demandant le mot de passe. Puis je le soumet à la console ... Enfin ca c'est plutôt ce que je voudrais faire :). Tel quel, la fenêtre demandant le mot de passe ne s'affiche qu'une fois le proc fermé. Merci à ceux qui ont pris le temps de lire jusque ici
proc.StartInfo.UseShellExecute = False
proc.StartInfo.RedirectStandardOutput = True
proc.StartInfo.WorkingDirectory = job_folder
proc.StartInfo.FileName = "z:" & abaqus_exec
proc.StartInfo.Arguments = " -j " & (New System.IO.FileInfo(OpenFileDialog1.FileName).Name) & " -cpus " & ComboBox_cores.Text
Output(proc.StartInfo.FileName & " " & proc.StartInfo.Arguments)
proc.Start()
While Not proc.StandardOutput.EndOfStream
out_lines = proc.StandardOutput.ReadLine.ToString
Output(out_lines)
If Not IsNothing(out_lines) Then
If Not InStr(out_lines, "Enter the password for") = 0 Then
MsgBox("xxx")
LoginForm1.Show()
System.Windows.Forms.SendKeys.SendWait(LoginForm1.PasswordTextBox.Text)
wait(2000)
System.Windows.Forms.SendKeys.SendWait("{Enter}")
wait(2000)
System.Windows.Forms.SendKeys.SendWait("y")
wait(2000)
System.Windows.Forms.SendKeys.SendWait("{Enter}")
Output("reset")
End If
End If
End While
proc.WaitForExit()
proc.Close()
TextBox1.Text = ""
End Sub
A voir également:
Execution d'une application, traitement en temps réèl du retour et envoie de don
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 oct. 2009 à 10:09
Salut
Quel programme DOS lances-tu ?
Est-ce que ce programme accepte des paramètres en ligne de commande ?
par exemple : C:\monProg.exe /p monPassword
Si le paramétrage est toujours dans le même ordre, tu peux aussi utiliser un fichier texte dans lequel tu mets les données qui doivent être saisies après le lancement de ton programme DOS :
C:\monProg.exe <monFichierTexte.txt
- pas d'espace après le < donc utilisation de " si le chemin ou le nom du fichier comporte des espaces
- doit être le dernier paramètre de la ligne de commande
Je n'y connais pas grand chose en .Net, mais regarde dans la doc si tu peux gérer des "pipes" : Cela permet de lancer des commandes et de récupérer l'output en temps réel.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Cseb1
Messages postés3Date d'inscriptionmardi 27 octobre 2009StatutMembreDernière intervention27 octobre 2009 27 oct. 2009 à 10:28
Salut,
Je vais rentrer un peu dans les détails, mais pour te répondre tout de suite , la réponse est non, on ne peu pas passer d'option au programme (enfin pas pour le pass). Le programme que j'execute s'appelle ABAQUS. Il va soumettre un calcul à un cluster de calcul (Windows HPC 2008). Pour 'discuter' avec le cluster, il initie une connexion a l'aide de job.exe qui fait partie du client microsoft HPC. Or lors de la connexion, job.exe vérifie si dans la base de registre se trouve déjà le mot de passe utilisateur(crypté). Si il n'y est pas, ou si le cluster lui répond que le pass n'est pas bon, ABAQUS propose alors un prompt qui demande mot de passe et ensuite si on veux l'enregistrer. Cette demande de mot de passe n'apparait donc chez les utilisateurs que lors de la première connexion ou lorsqu'ils ont changés leurs mot de passe. Voila :)
Pour terminé, je dirais que ce que je veux faire doit être très difficile, mais comme j'ai commencé le VB.net il y a 5 jours, même avec la meilleure volonté du monde, je n'arrive pas toujours à trouver la méthode pour réussir
Merci en tout cas d'avoir pris le temps de répondre.
Cseb1
Messages postés3Date d'inscriptionmardi 27 octobre 2009StatutMembreDernière intervention27 octobre 2009 27 oct. 2009 à 10:32
C'est moi ou il n'est pas possible d'éditer un message posté ?
Ça m'aurais permis de corriger les fautes et surtout de modifier la phrase suivante (mais je suppose que vous l'aviez tous fait de vous même):
Pour terminé, je dirais que ce que je veux faire ne doit pas être très difficile