Masquer, Réduire CMD.EXE avec VBS

Messages postés
11
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
3 avril 2009
- - Dernière réponse : Passarinho44
Messages postés
964
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
Afficher la suite 

6 réponses

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
 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
Commenter la réponse de cs_JMO
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
10
0
Merci
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.
Commenter la réponse de cs_rt15
Messages postés
11
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
3 avril 2009
1
0
Merci
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
Commenter la réponse de cs_TOURSENE
Messages postés
964
Date d'inscription
mercredi 28 mai 2008
Statut
Contributeur
Dernière intervention
13 juin 2012
0
Merci
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 ! =)
Commenter la réponse de Passarinho44
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
10
0
Merci
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
Commenter la réponse de cs_rt15
Messages postés
964
Date d'inscription
mercredi 28 mai 2008
Statut
Contributeur
Dernière intervention
13 juin 2012
0
Merci
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 !
Commenter la réponse de Passarinho44