Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DOS - PIPE : UN DOS PIPE REVU ET CORRIGÉ EN OCX DONC FACILE À UTILISER


Information sur la source

Catégorie :Système Classé sous : dos, dospipe, msdos, class, activex Niveau : Expert Date de création : 15/02/2005 Date de mise à jour : 06/12/2006 20:59:15 Vu / téléchargé: 9 251 / 950

Note :
8,25 / 10 - par 4 personnes
8,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
j'avais quelques problème notament sur win98 avec un source trouvé sur vbfrance (désolé, je me souviens plus de l'auteur) , donc j'ai repris le code et voici ma version.

L'ocx permet un dialog facile avec ms dos, très pratique pour exécuter des commandes ou lancer une appli extèrieur avec des paramètres

le code suivant montre la facilité d'utilisation
 

Source

  • Option Explicit
  • Private WithEvents Dos As DosClass
  • Private Sub Command1_Click()
  • Set Dos = New DosClass
  • Dos.CommandLine = Text2.Text
  • Screen.MousePointer = vbHourglass
  • Dos.ExecuteCommand
  • Screen.MousePointer = vbDefault
  • End Sub
  • Private Sub Dos_ReceiveOutputs(CommandOutputs As String)
  • Text1.Text = Text1.Text & CommandOutputs
  • Text1.Refresh
  • End Sub
Option Explicit

Private WithEvents Dos As DosClass

Private Sub Command1_Click()

    Set Dos = New DosClass
    
    Dos.CommandLine = Text2.Text
    Screen.MousePointer = vbHourglass
    Dos.ExecuteCommand
    Screen.MousePointer = vbDefault
    
End Sub

Private Sub Dos_ReceiveOutputs(CommandOutputs As String)

    Text1.Text = Text1.Text & CommandOutputs
    Text1.Refresh
    
End Sub

Conclusion

merci à l'auteur à l'origine du code
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

15 février 2005 11:46:39 :
problème d'upload du zip
09 mars 2005 16:54:12 :
petite correction suite à des problèmes sous win98 2 cas : -> la fonction GetFileSize fonctionne (ex windows XP) et on a un affichage temps réelle de l'execution de la commande -> la fonction getFileSize ne fonctionne pas (ex windows 98) et le message n'apparait qu'à la fin de la commande et oui pas trouvé d'autre solution ....si quelqu'un trouve comment faire pour faire tourner le GetFileSize ça corrigera le pb ;-)
10 mars 2005 17:18:36 :
modif pour le défilement automatique
06 décembre 2006 20:59:15 :
mise à jour pour information sur l'exécution d'une commande du type "dir"

Commentaires et avis

signaler à un administrateur
Commentaire de Urgo le 15/02/2005 16:54:43

Celui-ci aussi :
http://www.vbfrance.com/code.aspx?ID=6395
(peut-être celui à l'origine de ton prog??)

signaler à un administrateur
Commentaire de yomm le 15/02/2005 18:42:50

>>Urgo
en effet il semble en effet que tu es retrouvé le source d'origine, merci

Pour info : ce n'est pas une copie (je suis pas du genre à revendiquer un source alors qu'il n'est pas de moi LOL )
En effet, j'avais pas mal de problème sous windows 98, notament lorsque je lancais une appli via le dos pipe, il s'executait mais ne me rendait jamais la main. un ctrl+alt+sup et fin de tache s'imposait...puis miracle une fois la même commande relancée cela marchait très bien...je redémarrais la machine et hop un ctrl+alt+sup s'imposait de nouveau...donc voilà j'ai pris les bases et j'ai reposté pensant que d'autres avaient peut être rencontré ce problème...j'ai modifié le source d'origine pour moi donc je dois pas etre le seul ayant besoin des modif non ?

merci encore

et donc merci à  fredlynx pour le source d'origine
@+

signaler à un administrateur
Commentaire de MadM@tt le 15/02/2005 19:17:02

Et donc maintenant ça marche sans problème (dsl je ne teste pas j'ai déjà vu la source d'origine) ?
Parce que je trouve ça super interessant.

signaler à un administrateur
Commentaire de drissou le 21/02/2005 13:47:32

Bonjour
je viens d'essayer sur W98 SE et je ne vois rien dans le textbox noir ..

Quid ?

signaler à un administrateur
Commentaire de yomm le 21/02/2005 17:38:30

tu as bien fait un regsvr32 pour enregistrer la dll ?

signaler à un administrateur
Commentaire de mythic_kruger le 22/02/2005 13:24:58

Super programme. D'ailleurs un excellent exemple pour créer une dll ActiveX et son groupe de projet adequat.

signaler à un administrateur
Commentaire de drissou le 22/02/2005 18:26:35

Bonjour,

oui je viens de le faire et j'ai relancé en mode pas à pas
et la condition
GetFileSize(HLecturePipe, 0) > 0
n'est pas remplie donc je ne récupère rien..

Drissou

signaler à un administrateur
Commentaire de yomm le 23/02/2005 11:55:13

essai de remplacer la function:
Public Function ExecuteCommand() As String

par : (et tiens moi au courant)
---------------------------------------------------------------

Public Function ExecuteCommand() As String
    
    Dim Result          As Long
    Dim Start           As STARTUPINFO
    Dim sa              As SECURITY_ATTRIBUTES
    Dim LngOctetRec     As Long
    Dim strBuff         As String
'    Dim strBuff         As String * 255
    
    mOutputs = ""
    
    If Len(mCommand) = 0 Then
        MsgBox "La commande à lancer n'a pas été renseignée!!!", vbCritical
        Exit Function
    End If
    
    'Renseignement de la structure SECURITY_ATTRIBUTES
    sa.nLength = Len(sa)
    sa.bInheritHandle = 1&
    sa.lpSecurityDescriptor = 0&
    
    'Création du "Pipe" et Test du résultat
    Result = CreatePipe(HLecturePipe, HEcriturePipe, sa, 8000)
    DoEvents
    If Result = 0 Then
        MsgBox "Erreur de création du Pipe. Erreurr: " & Err.LastDllError, vbCritical
        Exit Function
    End If
    
    'Renseignement de la structure STARTUPINFO
    Start.cb = Len(Start)
    Start.dwFlags = STARTF_USESTDHANDLES Or STARTF_USESHOWWINDOW
    Start.hStdOutput = HEcriturePipe
    Start.hStdError = HEcriturePipe
    Start.wShowWindow = SW_HIDE
    
    'Création du process = Exécution de la commande
    Result = CreateProcessA(0&, mCommand, sa, sa, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, Start, ProcI)
    WaitForSingleObject ProcI.hProcess, INFINITE
    If Result <> 1 Then
        'Si une erreur, fermeture des Handles
        Call CloseHandle(ProcI.hProcess)
        Call CloseHandle(ProcI.hThread)
        Call CloseHandle(HLecturePipe)
        Call CloseHandle(HEcriturePipe)
        MsgBox "Fichier ou commande non trouvé.", vbCritical
        Exit Function
    End If
        
    'Lecture du "pipe" en lecture pour récupérer les infos !
    Dim toto As Long
    toto = GetFileSize(HLecturePipe, 0&)
    If toto > 0 Then
'    If GetFileSize(HLecturePipe, 0) > 0 Then
'        Do
            'frmMain.EcritureLog "avant readfile"
            strBuff = String(toto + 1, vbNullChar)
            Result = ReadFile(HLecturePipe, strBuff, toto, LngOctetRec, 0&)
'            strBuff = String(255, vbNullChar)
'            Result = ReadFile(HLecturePipe, strBuff, 255, LngOctetRec, 0&)
            'frmMain.EcritureLog "après readfile"
            mOutputs = mOutputs & Left(strBuff, LngOctetRec)
            RaiseEvent ReceiveOutputs(Left(strBuff, LngOctetRec))
            'frmMain.EcritureLog "LngOctetRec" & CStr(LngOctetRec)
            DoEvents
'            If LngOctetRec < 255 Then Exit Do
'        Loop While Result <> 0
    End If
    
    'Fermeture de tous les Handles
    Call CloseHandle(ProcI.hProcess)
    Call CloseHandle(ProcI.hThread)
    Call CloseHandle(HLecturePipe)
    Call CloseHandle(HEcriturePipe)
    
    'Renvoie du résultat
    ExecuteCommand = mOutputs
End Function

signaler à un administrateur
Commentaire de drissou le 23/02/2005 15:32:50

Dans ligne
toto = GetFileSize(HLecturePipe, 0&)

après exécution toto est à -1..

signaler à un administrateur
Commentaire de yomm le 25/02/2005 09:51:09

c'est étrange car d'après la MSDN :
---------------------------------------------------------------
Requirements
Client Requires Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.
Server Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server.
Header Declared in Winbase.h; include Windows.h.

Library Link to Kernel32.lib.

DLL Requires Kernel32.dll.  
---------------------------------------------------------------

donc ça devrait fonctionner....

à la rigueur il faudrait que tu fasses un msgbox err.LastDllError  afin de savoir pourquoi l'API GetFileSize te retourne INVALID_FILE_SIZE (= -1) après faut trouver sur le net la signification de ce code ....

affaire à suivre

signaler à un administrateur
Commentaire de yomm le 09/03/2005 16:55:36

drissou j'ai fait une modif , cela corrigera surement ton pb!

@+

signaler à un administrateur
Commentaire de drissou le 10/03/2005 09:12:08

Yomm

je viens de lancer ton nouveau prog.. et ça marche ;o)))

Mais deux questions / commentaires

1. Serait il possible, lorsque tu lances plusieurs commandes que le textbox descende toujours à la fin de la dernire réponse. ?
2. lorsque je lance une commande du type Dir, il me répond "fichier ou commande non trouvé".
Comment lancer ce type de commandes ?

Drissou

signaler à un administrateur
Commentaire de yomm le 10/03/2005 17:20:10

alors :

1-j'ai fait la modif de ton petit 1, c'est simplement un "Text1.SelStart = Len(Text1.Text)" après le Text1.Refresh

pour le point numéro 2....je me suis pas poser la question , j'y réfléchirai...

@+

signaler à un administrateur
Commentaire de drissou le 11/03/2005 13:19:29

merci

signaler à un administrateur
Commentaire de yomm le 25/04/2005 14:15:56

Salut a tous,

Très présent sur le réseau je me permets de vous demandez un petit geste.
Voilà un concour est ouvert pour des jeunse artistes musicaux et un groupe me tien particulièrement à coeur puiske ma cousine en fait partie.

Il s'agit d'un concour important sur RTL2...
je vous demande simplement d'aller sur le lien suivant :
http://www.rtl2.fr/jeux/playlist/votes_prt2005.asp

et de voter si cela vous plait , pour le groupe Lezard. L'inscription est gratuite et on peut voter une fois par jour....s'il vous plait c'est tellement difficile de percer dans ce millieux alors je vous demande un petit geste...

les votes s'arretent le 13 mai

merci pour eux

signaler à un administrateur
Commentaire de BZY1 le 10/05/2005 16:50:37

salut j'utilise windows 2000 au boulot et j'ai essayé le prog test qui est en commentaire et ca marche pas est ce que tu sais d'ou ca peut venir?
j'ai aussi le meme probleme avec la fonction shutdown en reseau....

sinon c super interessant ça va m'aider dans mes prog a venir merci

signaler à un administrateur
Commentaire de Bing2000 le 02/12/2005 15:22:49

alors moi j'ai une petite question par rapport à ce bout de code qui me semble trèa intéressant sauf que dans mon cas avant de pouvoir récupérer la valeur je dois saisir un mot de passe et seulement ensuite après j'ai une valeur.

Alors comment faire. Si je lance ce bout de code, il bloque à la lecture du pipe. Comment puis-je faire pour le faire suelement lire dès que j'ai tapé monn pass.?

Merci d'avance

signaler à un administrateur
Commentaire de yomm le 02/12/2005 18:28:34

>>Bing2000

Salut, tu peux pas passer ton password en paramètre lors de l'appel?

signaler à un administrateur
Commentaire de tictac01 le 14/07/2006 09:11:44

bonjour tout le monde
je veux executer un programme puis le suivre d'une commande propre
a ce programme tout ça dans une meme fenetre dos depuis VB
merci

signaler à un administrateur
Commentaire de xon le 02/11/2006 20:11:34

Très bonne idée... ! Mais ne fonctionne pas avec les fichiers de commande (.CMD), par exemple en plaçant une commande "DIR C:\" dans un fichier .CMD. Solution ? Merci de ta réponse

signaler à un administrateur
Commentaire de yomm le 06/12/2006 20:51:42

Re après pas mal de temps d'absence (désolé)

le but est de répondre à cet problématique d'exécution d'une commande du style "DIR".

la solution (testée pour sur XP) :
au lieu de faire "dir c:\" il faut faire : "cmd /c dir c:\"
en effet le dospipe execute un programme et en récupère les messages donc c'est le même principe ici on execute le programme "cmd" avec le paramètre "/c" pour exécuter la commande et quitter puis ajouter la commande souhaitée (ici "dir c:\")

note:
je pense que pour une exécution sur un Windows98 il doit faloir faire "command.com /c dir c:\" ou quelque chose du genre.

voilà, je suis repassé sur ce code vite fait alors je me suis dit que cela pouvait servir de fournir l'info ;-)

@+ et bon dev @ tous !!!

signaler à un administrateur
Commentaire de mmiguel le 02/04/2009 09:21:23

Bonjour, est il possible de lancer un programme avec un affichage dos depuis ce code?

signaler à un administrateur
Commentaire de Renfield le 02/04/2009 09:57:04 administrateur CS

le but est justement de ne pas le voir...

voir:

http://www.vbfrance.com/codes/APPLICATION-TYPE-CONSOLE-ADDIN_41156.aspx

signaler à un administrateur
Commentaire de mmiguel le 02/04/2009 10:33:34

Ce que je veux dire c'est que si je lance manuellement un logiciel de type console sous cmd, je vois le menu de mon programme. Tandis que si je fais cmd/c c:\monprogramme.exe, je ne vois pas le menu de mon programme.
Avez vous une idée?

signaler à un administrateur
Commentaire de Renfield le 02/04/2009 10:48:03 administrateur CS

pas sur de bien comprendre, mais je pense que la source que je t'indique va bien.

si tu génère ton .exe en tant qu'executable en mode console...
ce que tu va y ecrire (donc, ton menu, je suppose)
s'affichera dans la fenetre console courante, et non dans une nouvelle.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Détecter fermeture fenêtre MSDos [ par Asghaard ] Bonjour,Après avoir longuement cherché, j'en arrive à vous poser la question :Comment détecter la fin du procédure en MSDOS </stro Net send de dos en VB [ par benji547 ] J'aimerai s'avoir si il existe une comande similaire a net send sous msdos ou le moyen d'utiliser les commandes msdos. Merci Utilisation de Netsh [ par XavierH ] Salut,Je cherche a utiliser la fonction "netsh" dans une appli.Sous Dos la ligne "netsh -c interface dump &gt; C:\config-bureau.cfg" marche impec et s class bi [ par yohanan_h ] bojour je dois crée une class en c++ pour un projet ,dont l'une des fonction et de transformé un int en grand nombre pouvez vous m'aidé? class bi [ par yohanan_h ] bojour je dois crée une class en c++ pour un projet ,dont l'une des fonction et de transformé un int en grand nombre pouvez vous m'aidé? Licence ActiveX [ par magalirey ] Bonjour &#224; tous,Je souhaitai na&#239;vement ajouter un "Microsoft Comunications Control, version 6.0" &#224; mon projet pour tester la communicati combobox avec un listview pour liste déroulante [ par papaye976 ] Je cherche à faire un combobox avec un listview pour liste déroulante. J'ai créé un activeX avec un textbox et un bouton pour faire dérouler une list combobox avec un listview pour liste déroulante [ par papaye976 ] Je cherche à faire un combobox avec un listview pour liste déroulante. J'ai créé un activeX avec un textbox et un bouton pour faire dérouler une list Incérer les commandes Dos dans VB [ par Hach_net ] Salut Je veux appeler des commandes Dos dans mon projet VB Comment je peux faireMerci <IMG src="/i ActiveX VLC [ par sousoulebarbu ] Bonjour,J'essaye d&#233;sep&#233;rement de trouver des info sur comment faire fonctionner un Active X en vb et plus particuli&#232;rement l'activex de


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,170 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.