ACTIVEX POUR RÉCUPÉRER LA SORTIE DU DOS

cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015 - 21 févr. 2005 à 14:41
MickeyDoom Messages postés 8 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 15 septembre 2011 - 2 sept. 2006 à 09:48
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/29674-activex-pour-recuperer-la-sortie-du-dos

MickeyDoom Messages postés 8 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 15 septembre 2011 2
2 sept. 2006 à 09:48
Salut,
En modifiant la function execute du controle de :
If Ret <> 1 Then
'Au cas ou la commande/fichier n'existe pas
RaiseEvent Error("Commande et/ou fichier inexistants.")
Exit Function
End If

en ça


If Ret <> 1 Then
'Au cas ou la commande/fichier n'existe pas
Ret& = CreateProcessA(0&, "cmd /c " & myCommand, SA, SA, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, Start, Proc)
If Ret <> 1 Then
RaiseEvent Error("Commande et/ou fichier inexistants.")
Exit Function
End If
End If

c'est parfait, ça permet d'executer les commande interne de cmd.exe comme dir, copy, ver, set ...
++
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
21 févr. 2005 à 18:14
En fait, ça bouffe de la mémoire quand tu fais comme l'exemple que je donne ici en late binding.
Si tu fais les liaisons dans le projet et que tu déclares tes variables correctement (early binding) ça rendra le système plus efficace (10 à 20x plus rapide) et infiniment plus economique (8x moins de mémoire pour chaque déclaration). Mais bien sûr moins efficace qu'un appel API
cbnet Messages postés 176 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 7 mars 2005
21 févr. 2005 à 18:09
Je tiens à préciser à tous ceux qui n'aiment pas les ActiveX (pour des raisons de déploiement souvent), n'oubliez pas que vous pouvez le "convertir" en classe en moins de 5 min, histoire de l'intégrer directement dans votre projet...
cbnet Messages postés 176 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 7 mars 2005
21 févr. 2005 à 18:07
Plus court à taper c'est vrai... mais je ne suis pas passé par la machine script comme dans ton exemple, on me l'a déjà reproché dans une précédente source "ça bouffe trop de mémoire, VB est déjà assez lent comme ça".
Mais merci pour ta solution, je vais la tester quand même !
@+
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
21 févr. 2005 à 14:41
On peut faire ça depuis windows 2000 de cette façon :
set wsshell = createobect("wscript.shell")
set exec = wsshell.exec("toto.com")

do
doevents
out = out & exec.stdout.readall
... 'traitements particuliers
while exec.statut=0

out = out & exec.stdout.readall
Rejoignez-nous