bonjour,
j'ai des fichiers executablent sous DOS
j'aimerais lancer ces fichiers et recuperer les reponses => ça doit être possible...
par contre, j'aimerais que tout cela soit invisible pour l'utilisateur => la j'ai un doute
comment faire ?
bonjour,
j'ai des fichiers executablent sous DOS
j'aimerais lancer ces fichiers et recuperer les reponses => ça doit être possible...
par contre, j'aimerais que tout cela soit invisible pour l'utilisateur => la j'ai un doute
comment faire ?
Par contre pour que ce soit transparent pour l'utilisateur, à toi de faire tes exécutable qui ne s'affichent pas car je ne vois pas comment forcer ça via dotnet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // Lancer un exécutable Process mypro = Process.Start("chemin exécutable"); // Récupérer le code de retour int ExitCode = mypro.ExitCode;![]()
merci
j'arrive a lancer le programme par contre le probleme est que ça bug sur la deuxieme commande
=> je n'arrive pas a mettre les commandes a la suite
si je fais ça, ça marche (à condition de ne pas appuyer sur bouton2 avant que la commande DOS n'est pas fini d'être executée)
par contre si je vais ça, ça bug :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Dim myProcess As New Process Dim ExitCode As Integer Sub Button1Click(sender As Object, e As System.EventArgs) myProcess = Process.Start("C:\Documents and Settings\MARMONIER_C.IFOTEC\Bureau\test.bat") End Sub Sub Button2Click(sender As Object, e As System.EventArgs) ExitCode = myProcess.ExitCode msgbox(ExitCode) End Sub
j'ai le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim myProcess As New Process Dim ExitCode As Integer Sub Button1Click(sender As Object, e As System.EventArgs) myProcess = Process.Start("C:\Documents and Settings\MARMONIER_C.IFOTEC\Bureau\test.bat") ExitCode = myProcess.ExitCode msgbox(ExitCode) End Sub
=> que faire ?Process must exit before requested information can be determined.
lorsque je lance la commande une fenetre DOS s'ouvre mais rien ne s'affiche => est-il possible de ne pas voir cette fenetre DOS apparaitre ?
Désolée, je te réponds en C#.
Il te manquepour attendre que le process est fini de s'executer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part proc.WaitForExit();
Ce qui te donne ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "ton exe"; proc.StartInfo.Arguments= "test arguments"; proc.StartInfo.WindowStyle =ProcessWindowStyle.Hidden; //pour cacher la fenetre dos proc.Start(); proc.WaitForExit(); int exitCode = proc.ExitCode; proc.Close();
merci ça marche
... mais j'ai encore quelques questions
1- je voudrais faire un label avec ecrit à l'interrieur "chargement..." => je voudrais faire une animation pendant en attendant la reponse du programme en faisant défiler les "..." => il me semble que ça doit être possible en executant de façon asynchrone les commande mais je ne m'y connais pas trop : comment fair e ?
2- sous DOS, lorsque je lance mon fichier, il m'ecrit des choses dans la fenetre DOS : est-il possible de les recupérer ? a priori c'est possible mais je ne sais pas trop comment faire ? ça ne serait pas la propriété "StandardOutput" ?
Pour tes questions, il y a des réponses ici
Bon courage![]()
merci, ce lien est très interessant
par contre j'ai un probleme : si je lance RequeteStop alors qu'il n'y a pas de requetes en cours, ça plante
voila ce que j'ai fait mais ça ne marche pas :
aussi, j'ai un autre probleme => comment faire pour lancer plusieurs requetes en meme temps ? c'est possible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Dim processInfo As ProcessStartInfo Dim myProcess As Process ' création de la requète Sub RequeteStart() processInfo = new ProcessStartInfo() ' définition de la commande à executer processInfo.FileName = "toto" processInfo.Arguments = "-v 10" ' définition du mode de fontionnement processInfo.UseShellExecute = false processInfo.CreateNoWindow = true processInfo.RedirectStandardOutput = true myProcess = New Process() myProcess.StartInfo = processInfo ' création d'un evenement myProcess.EnableRaisingEvents = true AddHandler Me.myProcess.Exited, AddressOf Me.RequeteEnd myProcess.Start() End Sub ' pour stoper la requete Sub RequeteStop() ' erreur s'il n'y a pas de process actif If myProcess.HasExited = False Then myProcess.Kill End If End Sub ' s'effectue lorsque le process s'est terminé Sub RequeteEnd(sender As Object, e As System.EventArgs) msgbox(myProcess.ExitCode) Dim myBuffer As String = "" 'myProcess.StandardOutput.Read(myBuffer,0,300) myBuffer = myProcess.StandardOutput.ReadToEnd() msgbox(myBuffer) myProcess.Close End Sub
=> j'ai une collection avec mes taches et je voudrais les lancé à la suite de façon asynchrone
En gros j'aimerais avoir un tableau avec mes requetes (colonnes : ID, heure depart, heure arrivé, message) => quel control faut-il que je prenne ? ... je pensais prendre un datagridview : c'est ce qu'il y a de mieux ?
c'est bon j'ai résolu mes probleme saut :
"par contre j'ai un probleme : si je lance RequeteStop alors qu'il n'y a pas de requetes en cours, ça plante"
Ca me parait normal que ça plante.
Detruire quelquechose qui n'existe pas, ça provoque forcément une exception.
Pourquoi tu mettrais pas un bloc Try Catch ?
parce que je ne connaissais pas cette commande...Envoyé par missinfo
merci beaucoup
De rien, surtout que ça m'a permis de dépasser les 50 posts![]()
Partager