fonction exec et affichage problème apparition fenetre dos

fonction exec et affichage problème apparition fenetre dos - VB/VBA/VBS - Programmation

Marsh Posté le 01-07-2010 à 09:46:13    

Bonjour,
 
Je cherche à afficher le résultat d'une commande dos (ex DfsUtil /pktinfo) dans une fenetre. J'ai choisi pour cela la fonction exec() mais à l'execution la fenetre Dos s'ouvre puis se referme très rapidement ce que je ne voudrais pas voir apparaitre. ex du code:
 
set shl = createobject("wscript.shell" )
 Set objExecObject = shl.exec(commande)  
  Do While Not objExecObject.StdOut.AtEndOfStream
      strText = objExecObject.StdOut.ReadLine()
                          Loop
 
puis j'affiche strText dans une autre fenetre.
 
Je sais que je peux utiliser la commande Run mais je ne veux pas créer de fichier temporaire et je ne vois pas d'autre solution pour Run. Des idées? Merci

Reply

Marsh Posté le 01-07-2010 à 09:46:13   

Reply

Marsh Posté le 02-07-2010 à 09:18:34    

Pas compris où est le souci...???
 
Le problème est qu'on voit la fenetre dos ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 09:50:14    

oui elle apparait et disparait très vite. Je recupère bien les informations de la commandes dfsutil mais je ne veux pas que l'apparition furtive de la fenetre dos

Reply

Marsh Posté le 02-07-2010 à 11:06:05    

Pourquoi tu ne passes pas par Run ? Je comprends pas l'histoire du fichier temporaire...
 
Exemple pour créer le dossier TOTO sous C:\
La fenetre DOS n'apparait pas grace au ",0"

Code :
  1. Set shl = CreateObject("wscript.shell" )
  2. strTxt = "cmd /K MD C:\TOTO"
  3. shl.Run strTxt, 0


Message édité par SuppotDeSaTante le 02-07-2010 à 11:06:38

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 13:35:23    

Je ne passe pas par Run parce que j'ai l'impression que cela ne me permet pas de récupérer le résultat de ma commande. Dans ton cas ça marche avec l'exemple de ta commande parce qu'elle n'affiche rien dans DOS.  
 
Imaginons que je veuille faire un simple "set" alors dans le dos s'affichent toutes les infos du compte, ce sont ces lignes d'info que je veux recuperer pour les afficher dans une fenetre html. De ce que j'ai vu sur les différents sites, pour passer par le run il faut  faire une boucle qui lit chaque ligne, la copie dans un fichier texte, et à la fin on balaye le fichier texte et on l'affiche. Mais cela sous-entend la création d'un fichier ce que je veux éviter. Donc pour cela j'ai trouvé la fonction exec qui me permet bien d'afficher directement les lignes de DOS mais qui a l'inconvénient de faire apparaitre (meme si très brievement) la fenetre DOS.
 
J'espère que c'est plus clair.... dsl sinon

Reply

Marsh Posté le 02-07-2010 à 13:48:14    

C'est un peu le même problème que lui:  
http://groupes.codes-sources.com/a [...] 10373.aspx
 
S'il est plus clair je sais pas

Reply

Marsh Posté le 02-07-2010 à 14:12:59    

Non vraiment je pige pas le souci... Dsl...
 
On sait que pour mettre ce que la fenetre Dos affiche dans un fichier il suffit de faire ">chemin du fichier"
Donc meme un set, "Set >C:\toto.txt" te met bien ton set dans un fichier texte, derriere tu le lis, tu recuperes le contenu et tu detruis le fichier...
 

Code :
  1. Set shl = CreateObject("wscript.shell" )
  2.     strTxt = "cmd /K Set >C:\toto.txt"
  3.     shl.Run strTxt, 0
  4.     Open "C:\toto.txt" For Input Access Read As 1
  5.     Do While Not EOF(1)
  6.         Line Input #1, Texte
  7.         Texte2 = Texte2 & Chr(13) & Chr(10) & Texte
  8.     Loop
  9.     Close #1
  10.     MsgBox Texte2
  11.    
  12. 'Soit un kill pour du vba
  13.     Kill "C:\toto.txt"
  14. 'Soit ca
  15.     Set objFSO = CreateObject("Scripting.FileSystemObject" )
  16.     objFSO.deletefile "C:\toto.txt", True
  17.     Set objFSO = Nothing


Message édité par SuppotDeSaTante le 02-07-2010 à 14:15:05

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 14:29:38    

oui je suis d'ac c'est une solution qui marche. C'est ça que j'appelle fichier temporaire lol ouvrir un fichier ecrire dedans  le lire puis l'effacer. Je voulais eviter parce que j'ai vu qu'on pouvait faire sans avec exec mais bon je crois que je vais revenir à cette solution...

Reply

Marsh Posté le 02-07-2010 à 15:01:11    

Apres ca depend de ce que tu veux recuperer, mais avec du vbs, il y a des api pour a peu pres tout  :whistle:


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 15:11:31    

si c'est bien ça que je veux recuperer mais je voulais faire autrement mais c'est pas grave. Merci beaucoup en tout cas!

Reply

Marsh Posté le 02-07-2010 à 15:11:31   

Reply

Marsh Posté le 02-07-2010 à 15:20:36    

Tu veux récupérer le Set de l'invite de commande en vbs ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 15:22:36    

ah non pas le set mais dans l'esprit c'est ça je remplace juste set par le nom de ma commande

Reply

Marsh Posté le 02-07-2010 à 15:43:30    

Non mais osef l'esprit...
Concretement tu veux quoi ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 16:08:53    

ben je sais pas quoi te dire c'est bon j'ai ce que je veux donc cool.

Reply

Marsh Posté le 02-07-2010 à 17:16:49    

ah ok
:jap:


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed