MickeyDoom
Messages postés8Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention15 septembre 20112 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és473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 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és176Date d'inscriptionvendredi 29 octobre 2004StatutMembreDerniè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és176Date d'inscriptionvendredi 29 octobre 2004StatutMembreDerniè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és473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 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
2 sept. 2006 à 09:48
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 ...
++
21 févr. 2005 à 18:14
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
21 févr. 2005 à 18:09
21 févr. 2005 à 18:07
Mais merci pour ta solution, je vais la tester quand même !
@+
21 févr. 2005 à 14:41
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