Asghaard
Messages postés13Date d'inscriptionmardi 27 avril 2004StatutMembreDernière intervention31 août 2006
-
25 août 2006 à 10:56
Asghaard
Messages postés13Date d'inscriptionmardi 27 avril 2004StatutMembreDernière intervention31 août 2006
-
31 août 2006 à 15:08
Bonjour,
Après avoir longuement cherché, j'en arrive à vous poser la question :
Comment détecter la fin du procédure en MSDOS
j'utilise la commande
Shell "cmd.exe /C NomDeMonProgrammeOptionsDeMonProgramme", vbNormalFocus
le programme sous DOS s'éxecute mais j'aimerai que les macros sous Excel se mettent en pause le temps que la fenêtre DOS se termine.
Pour le moment, la seule parade que j'ai trouvé c'est d'affiché une MsgBox avant de lancer le programme en DOS et d'attendre que la fenêtre DOS se ferme pour appuyer sur [OK] pour continuer la macro.
Je ne veux pas utilsier de tempo étant donné que le programme sous DOS éxécute des calculs qui mettent un temps très variable à se faire. (de 1 minute à 15 minutes voir qques heures)
Qques indices recueillis :
j'ai lu des trucs où il était question de TerminateProcess ... de Handle ... ça me parle pas vraiment ...
If pid <> 0 Then
phnd = OpenProcess(SYNCHRONIZE, 0, pid)
If phnd <> 0 Then
Call WaitForSingleObject(phnd, INFINITE)
Call CloseHandle(phnd)
End If
End If
Me.Show
avec les déclaration suivantes :
Public Const INFINITE = &HFFFFFFFF ' Infinite timeout
Public Const SYNCHRONIZE = &H100000
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Dans cette version le process est completement suspendu, l'execution du code est mis en pause, il n'est libéré que par la fermeture de la fenetre DOS
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Asghaard
Messages postés13Date d'inscriptionmardi 27 avril 2004StatutMembreDernière intervention31 août 2006 25 août 2006 à 10:59
je suis désolé pour la taille de police utilisé !!
je reposte :
Bonjour,
Après avoir longuement cherché, j'en arrive à vous poser la question :
Comment détecter la fin du procédure en MSDOS
j'utilise la commande
Shell "cmd.exe /C NomDeMonProgrammeOptionsDeMonProgramme", vbNormalFocus
le programme sous DOS s'éxecute mais j'aimerai que les macros sous Excel se mettent en pause le temps que la fenêtre DOS se termine.
Pour le moment, la seule parade que j'ai trouvé c'est d'affiché une MsgBox avant de lancer le programme en DOS et d'attendre que la fenêtre DOS se ferme pour appuyer sur [OK] pour continuer la macro.
Je ne veux pas utilsier de tempo étant donné que le programme sous DOS éxécute des calculs qui mettent un temps très variable à se faire. (de 1 minute à 15 minutes voir qques heures)
Qques indices recueillis :
j'ai lu des trucs où il était question de TerminateProcess ... de Handle ... ça me parle pas vraiment ...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 30 août 2006 à 15:55
Non c'est pas prevu. Si tu veux vraiment supprimer un message, tu contacte un admin en lui donnant tes raisons et le lien sur le message. C'est lui qui jugeras la pertinence de ta demande.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #