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

cs_EXCLUSIF 59 Messages postés mercredi 5 février 2003Date d'inscription 9 août 2007 Dernière intervention - 25 juil. 2007 à 18:42 - Dernière réponse : jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 25 juil. 2007 à 19:06
3
Merci
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.

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 25 juil. 2007 à 19:24
3
Merci
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 ...

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de jmfmarques
cs_EXCLUSIF 59 Messages postés mercredi 5 février 2003Date d'inscription 9 août 2007 Dernière intervention - 25 juil. 2007 à 19:13
0
Merci
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.

@+
Commenter la réponse de cs_EXCLUSIF
cs_EXCLUSIF 59 Messages postés mercredi 5 février 2003Date d'inscription 9 août 2007 Dernière intervention - 25 juil. 2007 à 21:41
0
Merci
a méditer le coup de l'heure, merci
Commenter la réponse de cs_EXCLUSIF
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 25 juil. 2007 à 22:03
0
Merci
 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
Commenter la réponse de cs_JMO
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 25 juil. 2007 à 22:15
0
Merci
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
Commenter la réponse de cs_JMO
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 26 juil. 2007 à 07:32
0
Merci
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.
    
 
Commenter la réponse de jmfmarques

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.