[VB6] Verifier la présence d'un processus

Résolu
cs_EXCLUSIF Messages postés 59 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 9 août 2007 - 25 juil. 2007 à 18:42
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 26 juil. 2007 à 07:32
Bonjour,

Comment faire pour qu'au démarrage de mon application celle-ci vérifie que le processus concernant la sauvegarde ne soit pas lancé ? Et que donc elle se referme sans tenter de se connecter à la base de données en affichant un message du style "La sauvegarde est en cours, veuillez réessayer ultérieurement". J'ai fait une recherche parmi les codes-sources mais je ne trouve que des codes pour tuer des processus ou pour en gérer les priorités :(

Merci beaucoup,

Ludo

7 réponses

jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
25 juil. 2007 à 19:06
Bonjour,


 


Tu as là :



http://www.vbfrance.com/codes/CLASSE-SUR-PROCESSUS-LEURS-MODLES-PERMET-AVOIR-INFOS_40274.aspx

de quoi lister les processus en cours.si tu peux lister, n(rst-ce-pas, et que tu connais le nom de ton processus, tu sais s'il est en cours ou non !...

Mais il y a quand même plus simple à mettre en oeuvre : une petite appli qui lance tes sauvegardes et qui :
au lancement de la sauvegarde écrit 1 dans un "drapeau" (un minuscule fichier texte) et à sa fin y écrit 0. Il te suffit alors d'aller lire (par code) ce drapeau et de prendre ta décision.
3
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
25 juil. 2007 à 19:24
Comment çà, "si l'appli se plante" ?
Si une appli "se plante" pendant une opération de sauvegarde, le plantage doit alors générer une erreur... à gérer.....
Bon... au lieu de mettre dans le "drapeau" 1 au dévut et 0 à la fin :
mets-y l'heure de début de la sauvegarde au début et rien à la fin.
Dans ton appli : regarde ce drapeau et : si une heure est présente, compares avec l'heure actuelle.
On sait en général quelle est la durée approximative de la sauvegarde, n'est-ce-pas ?
Disons par exemple 40 minutes (exemple) ...
Si heure présente et heure actuelle - heure présente < 40 minutes, la sauvegarde est probablement en cours . Si par contre heure actuelle > 1 heure, c'est que quelque chose s'est "planté" ====>>> message d'alerte et possibilité de fermer l'appli proprement ===>> ce qui effacera le drapeau ...
3
cs_EXCLUSIF Messages postés 59 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 9 août 2007 1
25 juil. 2007 à 19:13
Merci bien pour la réponse rapide.

C'est vrai que le coup du drapeau c'est vraiment pas mal mais comment fait si l'appli de sauvegarde plante, se ferme et que le drapeau reste à 1. Toutes les applis clientes seront bloquées, c'est la seule chose qui me rebute un peu. J'avais vu la source que tu me proposes mais elle me parait trop complexe et trop complète pour faire une seimple détection de process. Mais bon je vais y jeter un oeil et voir ce que je peux en tirer.

@+
0
cs_EXCLUSIF Messages postés 59 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 9 août 2007 1
25 juil. 2007 à 21:41
a méditer le coup de l'heure, merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 26
25 juil. 2007 à 22:03
 Bonsoir à tous

Cet exemple ne doit pas être compliqué à adapter en vb6.

objProcess = "firefox.exe"
For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")
    If UCase(Process.Name) = UCase(objProcess) Then
       MsgBox "Le process " & Process.Name & " est actif.....numéro ID: " & Process.ProcessID
       MonProcess = True
       Exit For
    End If
Next
If MonProcess = False Then MsgBox "Le process " & objProcess & " n ''est pas actif"

Se baser sur la durée d'une sauvegarde, c'est une jmfmarquienne !

jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 26
25 juil. 2007 à 22:15
Re,

WMI permet aussi de surveiller des processes avec "instancedeletionevent" associé à "TargetInstance".

Néanmoins, j'utilise aussi le "drapeau", alias "top", pour surveiller des fichiers (x OS/Servers), et ce, malgré
que wmi permet la surveillance d'évolution d'un répertoire/fichier. Après plusieurs essais, j'ai de grands doutes
sur la fiabilité de cette surveillance.

jean-marc
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
26 juil. 2007 à 07:32
Bonjour,

Autres idées :

1) la première n'est pas mal mais un peu pélasitante au niveau de la durée de la sauvegarde.
 - pour chaque fichier traité en copie/sauvegarde : mettre dans un fichier texte (toujours le même) les informations suivantes : chemin du fichier - taille du fichier - heure di début de la copie
- à la fin de chaque copie  effacer les données de ce fichiet texte. A la fin de la sauvegarde : tuer carrément le fichier texte.
2) au lancement de l'appli :
   -si le fichier texte n'existe pas :  c'est bon et on continue alors
   - si le fichier existe : on a alors un doute (sauvegarde en cours ou interrompue par plantage ?) ===>> ce doute est vite levé par simple comparaison rapide entre les données du fichier texte : taille à traiter et heure de départ (par rapport à l'heure actuelle)... on saura ainsi assez vite si plantage pou non !

 2) la deuxième ne ralentit pas du tout l'application de sauvegarde elle-même mais conduit à commencer par effacer le support de sauvegarde (par souci de rigueur) :
  on ne fait rin durant l'application
  - à son lancement, toutefois, on "prend" le temps d'examiner l'évolution du nombre des octets disponibles sur le support de sauvegarde, dans un intervalle de temps "raisonnanble" et :
- si pas d'évolution : c'est bon, on peut continuer
 - si évolution : une sauvegarde est en cours ===>> alerte.
    
 
0