Masquer, Réduire CMD.EXE avec VBS

cs_TOURSENE Messages postés 11 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 3 avril 2009 - 4 oct. 2006 à 09:03
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 - 30 mai 2008 à 10:02
Salut à tous,

Tout d'abord, je ne suis pas sûr de poster au bon endroit, mais j'ai pas trouvé à cela pourrait être ailleurs. Donc si c'est pas bon, alors je suis désolé, je le ferai plus. C'est promis !!!

J'ai écris un petit script en VBS permettant d'envoyer des messages sur un réseau LAN, via l'invite de commandes. Je ne suis pas un crack en VBS, mais ce petit bout de code que j'ai un peu improvisé fonctionne plutôt bien. La console est démarrée, le message envoyé puis la console est fermée. Mais le problème c'est que la fenêtre reste affichée et parfois l'envoi du message prend plusieurs secondes. Du coup cette fenêtre qui reste imposante est parfois pénible.

Comment faire pour réduire la fenêtre de l'invite de commandes dans la barre des tâches, voire la rendre invisible ? Ca doit certainement pouvoir se faire mais j'ai beau chercher sur le net, je ne trouve pas de réponses.

Je vous donne le bloc qui permet d'ouvrir cmd.exe, de lui passer la commande et de la refermer aprés l'envoi du message. J'utilise ce script dans une application .hta.

Set oShell = CreateObject("WScript.Shell")
Set oExec = oShell.Exec ("cmd /K")
oExec.StdIn.WriteLine "net send " & form1.select1.value & " " & form1.zoneTexte.value
oExec.Terminate

Voilà, si quelqu'un pouvait me mettre sur une piste, ce serait sympa.

Merci d'avance, TOURSENE

6 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
4 oct. 2006 à 13:03
 Bonjour,

Pour les questions concernant le vbs:
Vous êtes ici : Thèmes / Visual Basic 6 / Langages dérivés / VBScript

Un Admin remettra ton topic dans le thème approprié.

Pour ta question concernant la fenêtre d'invite à True ou False, je n'ai rien trouvé
dans ma biblio vbs.

Bonne continuation.
jean-marc
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
6 oct. 2006 à 20:15
Salut,


Je compte plus les question sur l'execution de commande en invite depuis le VBS/VB6 ou d'execution d'executable depuis VBS.


Je vais finir par chercher un bon lien, ou à en faire un...

Set oShell = CreateObject("WScript.Shell")
oShell.Run "cmd /C net send " & form1.select1.value & " " & form1.zoneTexte.value, 0, False

/C plutôt que /K pour que l'invite se ferme après usage.
0, pour démarrer cmd caché.
False, pour dire qu'on attend pas la fin de cmd pour executer l'éventuelle suite du scripte.

Code non testé.

Je suis en deuxième
année en école d'ingénieur et passionné de développement logiciel sous
D7 et VB6. Je cherche un stage en entreprise sur Paris de début avril à
fin juillet 2007.
0
cs_TOURSENE Messages postés 11 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 3 avril 2009 1
9 oct. 2006 à 13:55
Salut,

Merci rt15 pour ta réponse.

Le paramêtre /C est pourtant précisé dans l'aide de cmd.exe de l'invite de commande. Comment ai-je pu passer à côté ?!

Je vais essayé ça de suite... Encore merci.

TOURSENE
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012
29 mai 2008 à 17:43
Salut !

Mon code est un peu différent et je n'arrive pas à masquer mon invite de commande ...

var res = new ActiveXObject("WScript.Shell").Exec("cmd /c cscript ../Test.vbs").StdOut.ReadAll();

J'espère que vous pourrez m'aider ! =)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
29 mai 2008 à 19:00
Salut,

Tu as de la chance que je soit encore vivant !

Le système de up fréquent sur les fofos classique n'existe pas ici.


Ce qui fait que tout nouveau message sur un vieux thread (Par vieux j'entends agé de plus de... 2 semaines !) n'est lu que par ceux qui reçoivent une alerte mail parce qu'un nouveau message a été posté. Alors un thread qui a dans les 19 mois...


Autrement dit on doit être genre 3 grand max a être suceptible de lire ta question et d'y répondre, à comparer avec l'armée qui attend les nouveaux threads !

Ma solution passe par l'emploi de run, qui prend plus de paramètres que exec. Le résultat de la commande est envoyé dans un fichier puis lu via une instance de FileSystemObject.





<hr />
Set oShell = CreateObject("WScript.Shell")
oShell.Run "cmd /C cscript //nologo ..\test.vbs > toto.txt", 0, trueset fso = CreateObject("Scripting.FileSystemObject")
Set stream = fso.OpenTextFile("toto.txt", 1, False)
content = stream.ReadAll
wscript.echo content
stream.Close
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012
30 mai 2008 à 10:02
Salut !

Merci beaucoup d'avoir lu mon message alors et d'y avoir répondu !

En fait moi j'execute mon code en javascript mais j'ai adapté le tien et ça fonctionne parfaitement !

Le problème de la commande run était justement de récupérer le résultat.
J'aurais pas penser à rediriger le résultat dans un fichier texte, bien vu !

Encore merci et @ la prochaine !

Bon codage à tous !
0
Rejoignez-nous