begin process at 2012 02 15 15:48:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Continuer le programme uniquement a la fin de l'execution d'un shell


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Continuer le programme uniquement a la fin de l'execution d'un shell

lundi 7 avril 2008 à 15:29:26 | Continuer le programme uniquement a la fin de l'execution d'un shell

faucheuse

Rebonjour ami(e)s programmeurs et programmeuzes,

j'utilise des commandes DOS dans mon projet VBA et à chaque fois, pour laisser le temps au shell d'executer ce que je lui demande je met une temporisation de quelques secondes (qui varie de pas tres longtemps pour un tit telechargement a presque 30 secondes pour un netsh)

Or l'execution du shell est variable d'un ordinateur a l'autre, selon qu'il est deja ete lancé une fois ...

Donc j'aurais voulu savoir si il y avait un moyen de continuer l'execution du programme uniquement lorsque le shell a fini de travailler?? ou alors peut etre est ce plus simple de vérifier si une fenètre est ouvert ou non mais la non plus je ne sais pas comment faire.

PS : call shell(command\c), rapport a vérifier si une fenetre est ouverte ou pas.
lundi 7 avril 2008 à 18:14:20 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell
lundi 7 avril 2008 à 20:22:08 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell

bigfish_le vrai

Membre Club
Réponse acceptée !
Salut,

une autre solution :

Sub test()
    Dim CMDAppli As Double , TestFichier As String
    'on cree un fichier bidonqui ne sert qu'a verifié l'etat d'execution de la commande ping
    CMDAppli = Shell("cmd.exe /c echo > c:\temp\bidon.txt", 0)
    Do While TestFichier = "" 'on boucle tant que le fichier bidon n'est pas créé
        TestFichier = Dir("c:\temp\bidon.txt")
        DoEvents
    Loop
    'on lance une commande ping, puis on ecrit le resultat dans un fichier ResultatPing.txt et on efface le fichier bidon
    'start /min /wait lance la commande ping dans une deuxieme cmd qui attendra que la commande ping soit terminé avant

    'd'autoriser l'execution de la commande del. cette partie n'est pas obligatoire
    'les 2 && permetent d'executer une 2ieme commande ecrite sur la meme ligne que la premiere
    CMDAppli = Shell("cmd.exe /c start /min /wait ping www.vbfrance.com > c:\temp\ResutatPing.txt&&del c:\temp\bidon.txt", 0)
    Do While TestFichier <> ""  le fichier bidon ne sera effacé qu'une fois la commande ping terminé donc on boucle tant que le fichier existe
        TestFichier = Dir("c:\temp\bidon.txt")
        DoEvents
    Loop
    MsgBox "fin d'execution"
End Sub

Vala

A+

lundi 7 avril 2008 à 20:25:21 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell

BruNews

Administrateur CodeS-SourceS
Il y a DoEvents() en VBA ?

ciao...
BruNews, MVP VC++
lundi 7 avril 2008 à 20:33:31 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell

bigfish_le vrai

Membre Club
oui ! copie de l'aide VBA Excel 2003 :

DoEvents Function

       

Yields execution so that the operating system can process other events.

Syntax

DoEvents( )

Remarks

The DoEvents function returns an Integer representing the number of open forms in stand-alone versions of Visual Basic, such as Visual Basic, Professional Edition. DoEvents returns zero in all other applications.

DoEvents passes control to the operating system. Control is returned after the operating system has finished processing the events in its queue and all keys in the SendKeys queue have been sent.

DoEvents is most useful for simple things like allowing a user to cancel a process after it has started, for example a search for a file. For long-running processes, yielding the processor is better accomplished by using a Timer or delegating the task to an ActiveX EXE component.. In the latter case, the task can continue completely independent of your application, and the operating system takes case of multitasking and time slicing.

Caution   Any time you temporarily yield the processor within an event procedure, make sure the procedure is not executed again from a different part of your code before the first call returns; this could cause unpredictable results. In addition, do not use DoEvents if other applications could possibly interact with your procedure in unforeseen ways during the time you have yielded control.


A+
lundi 7 avril 2008 à 20:37:18 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell

BruNews

Administrateur CodeS-SourceS
ok ok OUI suffisait.

ciao...
BruNews, MVP VC++
mardi 8 avril 2008 à 06:24:47 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell

Renfield

Administrateur CodeS-SourceS
jolie boucle ^^
mardi 8 avril 2008 à 09:46:13 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell

faucheuse

ok merci beaucoup minna, je vais voir ce que je peux faire avec ca, d'abord faut que je comprenne comment ca marche et c'est pas gagné XD.
mardi 8 avril 2008 à 09:48:17 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell

oommeeggaa3d

J'ai déja utilisé l'idée du fichier, ça marche bien.
Par contre j'y avais ajouté un timer ou un sleep( ) pour éviter de scanner en permanence l'existence du fichier, mais seulement toutes les secondes ou plus.

mardi 8 avril 2008 à 10:00:35 | Re : Continuer le programme uniquement a la fin de l'execution d'un shell

faucheuse

Euh...scusez moi, quelqu'un pourrait m'expliquer un peu le code de Renfield svp, par exemple le "lpverb" , les mask utilisés (je comprend pas trop pourquoi ils sont la), les 4 "public declare function", se sont mes principales questions (oui je sais que ca fait la moitié du code, mais faut bien XD)

Merci d'avance

1 2

Cette discussion est classée dans : programme, shell, execution, uniquement, continuer


Répondre à ce message

Sujets en rapport avec ce message

Fin d'une commande shell [ par champi ] Salut ...Un petit probleme a vous soumettre :comment attendre la fin d'une execution d'un programme externe lance via la commande Shell?Je m'explique: Urgent Shell [ par ShanaBurns ] Je fait un shellExecute pis je voudrais qui soit style modal ou si vous préferer je voudrais que mon appliquation qui l'appelle continue sont executio attendre la fin d'execution d'un programme [ par Thanos_the_yopper ] bonjour,dans mon programme VB6, je lance un exe avec la commande Shell. Or, j'aurais voulu attendre la fin d'execution du programme pour continuer mon attendre la fin d'execution d'un programme [ par Thanos_the_yopper ] bonjour,dans mon programme VB6, je lance un exe avec la commande Shell. Or, j'aurais voulu attendre la fin d'execution du programme pour continuer mon Continuer l'exécution d'un programme [ par Conradd ] Bonjour à tous, Je travaille en VB6.0 sur un programme qui commence à mettre beaucoup de temps à s'exécuter. Je voudrais afficher un form avec un me execution automatiques [ par dOsSpr0uTosS ] Salut à tous,Voila mon problèm j'ai creer un programme et je l'ai copier dans le repertoire demarrage pour qu'il s'execute automatiquement au debut de Ajouter des Textbox pendant l'execution du programme [ par ixil ] Bonjour a tous !Lorsque mon application est lancée j'aurais voulu savoir comment faire pour ajouter une textbox en cliquant par exemple sur un bouton Execution de fichier .bat [ par benschaff ] Bonjour à tous, nouveau ici je me permets de faire ce post pour soliciter votre aide. J'ai cherché et je n'ai pas trouver comment exécuter un fichier detection de l'execution d'un action sur un fichier [ par nasina ] est-il possible qu'un programme puisse detecter l'execution d'un quelconque action sur un fichier. le but est que mon programme doit s'executer automa execution d'un programme [ par wx ] Bj à tous, J'ai fait un petit programme de controle. Je voudrais qu'il se lance tous les 5 minutes par ex. sans se montrer. Je pensais mettre le .exe


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales