Rrominet
Messages postés133Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention24 novembre 2014
-
17 sept. 2003 à 20:28
varaxor
Messages postés1Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention12 avril 2011
-
12 avril 2011 à 17:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
' Wait for asynchronous command to finish
While Len(Dir(ShellCmdPath)) > 0
DoEvents
Wend
End Sub
gandalfkhorne
Messages postés70Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention 1 octobre 2004 20 nov. 2006 à 15:31
Chapeau pour ce petit bout de code, qui aurait pu être, et même du être, un argument Wait dans le Shell de base de VB.
Thx pour cela, et sinon je m'en sers dans une appli pour un controle de raccourci de Jeu.
(Tu clique le programme charge l'image cd et lance l'executable, en clair ton jeu démarre sans avoir besoin de faire d'opérations chiantes.Et dans cela il sert à protéger contre la double-execution du jeu par simple bascule)
Bonne continuation.
Praska
Messages postés1Date d'inscriptionjeudi 2 mars 2006StatutMembreDernière intervention27 octobre 2006 27 oct. 2006 à 15:47
Merci beaucoup !
Ton code m'a sauvé la vie ...
Surtout par sa facilité d'intégration
cs_surfman
Messages postés46Date d'inscriptionsamedi 1 mars 2003StatutMembreDernière intervention16 septembre 2008 4 déc. 2005 à 10:28
Pas mal je m'en sers pour faire des mises à jours de mon logiciel sans que l'utilisateur puisse continuer à utiliser ou installer ou configurer le reste...
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 20 nov. 2005 à 19:33
Super, c'est pratique moi je l'utilise comme sa :
do
doevents
shellwait "notepad.exe"
loop
Comme sa on peut pas fermer le bloc-note ...
Tres bonne source je met 10/10
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 20 nov. 2005 à 15:57
Super, j'ai mis 10/10
cs_kazimir
Messages postés26Date d'inscriptionmercredi 23 octobre 2002StatutMembreDernière intervention 4 novembre 2008 28 juil. 2005 à 21:12
je viens d'essayé ce bout de code, c'est vraiment pile poil ce que je cherchais.!!
j'ai mis 20, ca va?
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 18 juil. 2005 à 08:12
bobjay < Merci ! Mais si ma femme passe par la, je vais avoir des problèmes !!!
Christophe R.
bobjay
Messages postés66Date d'inscriptionmercredi 19 mai 2004StatutMembreDernière intervention 1 avril 2007 16 juil. 2005 à 17:02
Ce code apporte enfin la solution à un vieux problème que j'avais, de plus il est court et fonctionne super bien. Crenaud76 je t'aime ^^
cbnet
Messages postés176Date d'inscriptionvendredi 29 octobre 2004StatutMembreDernière intervention 7 mars 2005 10 févr. 2005 à 20:24
pour te rassurer les commentaires stupides ne sont pas de toi ! En voici un par exemple "j'ai une erreur dans cmd.exe "'gt n'est pas reconnu comme commande interne ou externe" mais dans tous les cas c'est pas grave on a droit d'etre debutant, meme a ce point la... :D
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 2 févr. 2005 à 23:19
" il y a quelques commentaires stupides" < Soit plus précis, je risquerai de me vexer !!
cbnet
Messages postés176Date d'inscriptionvendredi 29 octobre 2004StatutMembreDernière intervention 7 mars 2005 2 févr. 2005 à 16:48
tres bon code, mais sans etre mechant il y a quelques commentaires stupides... ;)
cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 avril 2007 9 nov. 2004 à 09:58
Bonjour,
Un petit témoignage...
Sous XP PACK2 VBA Office 2003 et Win 98 SE avec MVBStudio.
ShellWait "Command.com /c dir /b /o-d c:\windows\*.txt > c:\liste.TXT"
' Mettre dans un fichier Liste.txt le non de tous les fichiers *.txt se trouvant dans le repertoire windows et les trier du plus recent au plus ancien.
ShellWait fonctionne trés bien. je m'en sert pour remplir une ListBox.
Merci.
SCOY
Messages postés43Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention12 avril 2005 5 nov. 2004 à 16:26
Salut,
Non je suis sous XP, j'ai éssayé de remplacé par :>, mais maintenant j'ai une erreur : ""c:\*.*:" n'est pas un périphérqiue reconnu.
Fichier introuvable""......
:-(
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 5 nov. 2004 à 13:05
Les mystères de l'affichage : dans la ligne
Exemple : ShellWait "cmd.exe /c dir c:\*.*>c:\DirC.txt"
Les 4 caractères > doivent être remplacés par un seul : le signe "est plus grand que"
J'essaie encore : le signe >
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 5 nov. 2004 à 11:59
Peut-être es-tu sous Win9x plutot que sous NT ou XP. Auquel cas il faut remplacer le "Cmd.exe" par un "Command.com" ???
SCOY
Messages postés43Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention12 avril 2005 5 nov. 2004 à 10:39
Salut,
Je suis très interresser par ta source!!
Je l'ai testée, mais j'ai une erreur dans cmd.exe "'gt n'est pas reconnu comme commande interne ou externe, un programme exécutable ou un fichier de commande"
Je suis un vrai débutant, donc j'ai fait un copier collé de ton code dans un module, et mis sur un bouton ShellWait "cmd.exe /c dir c:\*.*>C:\Docs\Norton.txt"
(J'ai creer un fichiers text avec le blocs note, contenant une commande pour lancer les parametres de norton internet "Norton.txt")
T'as une soluce?
Merci!
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 9 août 2004 à 08:58
Il y a plus simple que de concaténer avec un Chr(34). Tu peux tout simplement faire cela :
ShellWait "dir c:\>""c:\tmp\toto.txt"""
patrick532
Messages postés40Date d'inscriptionmardi 2 septembre 2003StatutMembreDernière intervention20 avril 2009 7 août 2004 à 11:30
salut,
source très utile, merci.
je la trouve plus pratique que les prog de PROVB.
il est à noter toutefois qu'il faut faire attention à la syntaxe de la ligne de paramètres du style:
remplacer ShellWait "dir c:\>"c:\tmp\toto.txt""
par ShellWait "dir c:\>" & chr(34) "c:\tmp\toto.txt" & chr(34)
bonne continuation.
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 20 févr. 2004 à 15:40
Pour moi c'est util, g mis 8 car g ne savai pas comment faire et que ça fonctionne très bien.
PROVB
Messages postés10Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention19 août 2013 30 sept. 2003 à 15:42
Salut,
Fonction déja faite il y à longtemps, et de meilleur façon.
Va voir mes codes tu verras.
cs_VVV
Messages postés40Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention15 juin 2009 18 sept. 2003 à 14:08
Ah d'accord... désolé je n'avais pas bien regardé.
Merci ! Et, donc, 12/10 :-) Bravo.
cs_AbriBus
Messages postés492Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention25 avril 20075 18 sept. 2003 à 13:41
donc, pour que ca se voit pas ==>
Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbHide))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub
cs_AbriBus
Messages postés492Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention25 avril 20075 18 sept. 2003 à 13:38
lol, ca s'execute deja en mode vbMinimizedNoFocus, que tu peux par la suite modifier en vbNormalFocus ou n'importe quoi d'autre
cs_VVV
Messages postés40Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention15 juin 2009 18 sept. 2003 à 13:33
Pas mal du tout ! Ca m'intéresse d'ailleurs très fort...
Pourrais-tu me dire s'il est possible d'exécuter une commande avec ton ShellWait dans une fenêtre "invisible" (du style shell Commande, vbhide).
Je te mets 8/10... et 10/10 si tu peux me répondre ;-)
Merci !
cs_AbriBus
Messages postés492Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention25 avril 20075 18 sept. 2003 à 09:34
crenaud> impec. Rien à dire, bonne utilisation des API, simple, efficace... NIKEL
Bon ben ca fera 12/10 ;-}
Rrominet
Messages postés133Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention24 novembre 20141 17 sept. 2003 à 23:57
Ha ouais command.com... ;-)
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 17 sept. 2003 à 23:44
Euhhh !! Vous avez pas tout compris la !! Ca ne sert pas qu'à lancer des commandes DOS !! Vous pouvez faire ShellWait "Winword.exe" si vous voulez, et le code ne reprendra qu'après la fermeture de Word !!
Alors excusez-moi si dans l'exemple je parlais de CMD.EXE mais je suis XP depuis un moment (et même NT 4.0 et même 3.51, avant) alors j'ai perdu le réflexe du "command.com" depuis !!!
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 17 sept. 2003 à 23:05
Pour Rrominet
Sous Win9x, il suffit de remplacer
cmd.exe par command.com
et ça marche !
Rrominet
Messages postés133Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention24 novembre 20141 17 sept. 2003 à 20:28
Ca peut pas être mal
Seul ennui, ça utilise une commande DOS, et surtout le CMD de 2k ou XP, donc sous Win95/98 (et NT ?) ça ne fonctionne pas...
Mais c'est simple d'utilisation, c'est l'avantage !!
12 avril 2011 à 17:58
Sub ShellAndWait(PathName As String, _
Optional WindowsStyle As VbAppWinStyle = vbMinimizedFocus)
Dim ShellCmdPath As String
Dim FileNumber As Long
Dim template As String
Dim i As Integer
' Generate a temporary filename
i = 0
Do
ShellCmdPath = Hex(i) & ".bat"
i = i + 1
Loop While Len(Dir(ShellCmdPath)) > 0
' Prepare batch file content
template = "@echo off" & vbCrLf
' Action to execute
template = template & PathName & vbCrLf
' Remove created batch file when action has been executed
template = template & "del " & ShellCmdPath
' Create batch file
FileNumber = FreeFile
Open ShellCmdPath For Output As #FileNumber
Print #FileNumber, template
Close #FileNumber
' Execute batch file containing action
Shell ShellCmdPath, WindowsStyle
' Wait for asynchronous command to finish
While Len(Dir(ShellCmdPath)) > 0
DoEvents
Wend
End Sub
20 nov. 2006 à 15:31
Thx pour cela, et sinon je m'en sers dans une appli pour un controle de raccourci de Jeu.
(Tu clique le programme charge l'image cd et lance l'executable, en clair ton jeu démarre sans avoir besoin de faire d'opérations chiantes.Et dans cela il sert à protéger contre la double-execution du jeu par simple bascule)
Bonne continuation.
27 oct. 2006 à 15:47
Ton code m'a sauvé la vie ...
Surtout par sa facilité d'intégration
4 déc. 2005 à 10:28
20 nov. 2005 à 19:33
do
doevents
shellwait "notepad.exe"
loop
Comme sa on peut pas fermer le bloc-note ...
Tres bonne source je met 10/10
20 nov. 2005 à 15:57
28 juil. 2005 à 21:12
j'ai mis 20, ca va?
18 juil. 2005 à 08:12
Christophe R.
16 juil. 2005 à 17:02
10 févr. 2005 à 20:24
2 févr. 2005 à 23:19
2 févr. 2005 à 16:48
9 nov. 2004 à 09:58
Un petit témoignage...
Sous XP PACK2 VBA Office 2003 et Win 98 SE avec MVBStudio.
ShellWait "Command.com /c dir /b /o-d c:\windows\*.txt > c:\liste.TXT"
' Mettre dans un fichier Liste.txt le non de tous les fichiers *.txt se trouvant dans le repertoire windows et les trier du plus recent au plus ancien.
ShellWait fonctionne trés bien. je m'en sert pour remplir une ListBox.
Merci.
5 nov. 2004 à 16:26
Non je suis sous XP, j'ai éssayé de remplacé par :>, mais maintenant j'ai une erreur : ""c:\*.*:" n'est pas un périphérqiue reconnu.
Fichier introuvable""......
:-(
5 nov. 2004 à 13:05
Exemple : ShellWait "cmd.exe /c dir c:\*.*>c:\DirC.txt"
Les 4 caractères > doivent être remplacés par un seul : le signe "est plus grand que"
J'essaie encore : le signe >
5 nov. 2004 à 11:59
5 nov. 2004 à 10:39
Je suis très interresser par ta source!!
Je l'ai testée, mais j'ai une erreur dans cmd.exe "'gt n'est pas reconnu comme commande interne ou externe, un programme exécutable ou un fichier de commande"
Je suis un vrai débutant, donc j'ai fait un copier collé de ton code dans un module, et mis sur un bouton ShellWait "cmd.exe /c dir c:\*.*>C:\Docs\Norton.txt"
(J'ai creer un fichiers text avec le blocs note, contenant une commande pour lancer les parametres de norton internet "Norton.txt")
T'as une soluce?
Merci!
9 août 2004 à 08:58
ShellWait "dir c:\>""c:\tmp\toto.txt"""
7 août 2004 à 11:30
source très utile, merci.
je la trouve plus pratique que les prog de PROVB.
il est à noter toutefois qu'il faut faire attention à la syntaxe de la ligne de paramètres du style:
remplacer ShellWait "dir c:\>"c:\tmp\toto.txt""
par ShellWait "dir c:\>" & chr(34) "c:\tmp\toto.txt" & chr(34)
bonne continuation.
20 févr. 2004 à 15:40
30 sept. 2003 à 15:42
Fonction déja faite il y à longtemps, et de meilleur façon.
Va voir mes codes tu verras.
18 sept. 2003 à 14:08
Merci ! Et, donc, 12/10 :-) Bravo.
18 sept. 2003 à 13:41
Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbHide))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub
18 sept. 2003 à 13:38
18 sept. 2003 à 13:33
Pourrais-tu me dire s'il est possible d'exécuter une commande avec ton ShellWait dans une fenêtre "invisible" (du style shell Commande, vbhide).
Je te mets 8/10... et 10/10 si tu peux me répondre ;-)
Merci !
18 sept. 2003 à 09:34
Bon ben ca fera 12/10 ;-}
17 sept. 2003 à 23:57
17 sept. 2003 à 23:44
Alors excusez-moi si dans l'exemple je parlais de CMD.EXE mais je suis XP depuis un moment (et même NT 4.0 et même 3.51, avant) alors j'ai perdu le réflexe du "command.com" depuis !!!
17 sept. 2003 à 23:05
Sous Win9x, il suffit de remplacer
cmd.exe par command.com
et ça marche !
17 sept. 2003 à 20:28
Seul ennui, ça utilise une commande DOS, et surtout le CMD de 2k ou XP, donc sous Win95/98 (et NT ?) ça ne fonctionne pas...
Mais c'est simple d'utilisation, c'est l'avantage !!