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

cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 - 15 févr. 2005 à 16:54
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 15 mars 2010 à 09:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29517-dos-pipe-un-dos-pipe-revu-et-corrige-en-ocx-donc-facile-a-utiliser

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 mars 2010 à 09:30
ben là :
DosPipe.dll
linkdu64 Messages postés 2 Date d'inscription dimanche 26 juillet 2009 Statut Membre Dernière intervention 24 juin 2010
14 mars 2010 à 12:23
ou est le ocx ? svp
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 avril 2009 à 10:48
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.
cs_mmiguel Messages postés 21 Date d'inscription jeudi 17 mars 2005 Statut Membre Dernière intervention 19 août 2009
2 avril 2009 à 10:33
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?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 avril 2009 à 09:57
le but est justement de ne pas le voir...

voir:

http://www.vbfrance.com/codes/APPLICATION-TYPE-CONSOLE-ADDIN_41156.aspx
cs_mmiguel Messages postés 21 Date d'inscription jeudi 17 mars 2005 Statut Membre Dernière intervention 19 août 2009
2 avril 2009 à 09:21
Bonjour, est il possible de lancer un programme avec un affichage dos depuis ce code?
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
6 déc. 2006 à 20:51
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 !!!
cs_xon Messages postés 13 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 9 septembre 2011
2 nov. 2006 à 20:11
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
tictac01 Messages postés 5 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 17 juillet 2006
14 juil. 2006 à 09:11
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
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
2 déc. 2005 à 18:28
>>Bing2000

Salut, tu peux pas passer ton password en paramètre lors de l'appel?
Bing2000 Messages postés 18 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 12 mars 2007
2 déc. 2005 à 15:22
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
BZY1 Messages postés 214 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 12 avril 2008
10 mai 2005 à 16:50
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
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
25 avril 2005 à 14:15
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
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
11 mars 2005 à 13:19
merci
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
10 mars 2005 à 17:20
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...

@+
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
10 mars 2005 à 09:12
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
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
9 mars 2005 à 16:55
drissou j'ai fait une modif , cela corrigera surement ton pb!

@+
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
25 févr. 2005 à 09:51
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
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
23 févr. 2005 à 15:32
Dans ligne
toto = GetFileSize(HLecturePipe, 0&)

après exécution toto est à -1..
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
23 févr. 2005 à 11:55
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
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
22 févr. 2005 à 18:26
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
mythic_kruger Messages postés 241 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 10 novembre 2005
22 févr. 2005 à 13:24
Super programme. D'ailleurs un excellent exemple pour créer une dll ActiveX et son groupe de projet adequat.
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
21 févr. 2005 à 17:38
tu as bien fait un regsvr32 pour enregistrer la dll ?
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
21 févr. 2005 à 13:47
Bonjour
je viens d'essayer sur W98 SE et je ne vois rien dans le textbox noir ..

Quid ?
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
15 févr. 2005 à 19:17
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.
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
15 févr. 2005 à 18:42
>>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
@+
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
15 févr. 2005 à 16:54
Celui-ci aussi :
http://www.vbfrance.com/code.aspx?ID=6395
(peut-être celui à l'origine de ton prog??)
Rejoignez-nous