IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment savoir si un programme externe (Malwarebytes) est terminé ?


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment savoir si un programme externe (Malwarebytes) est terminé ?
    Bonjour à tous.

    Je suis débutant en C et voudrait développer un programme qui me lancerait à la suite différents logiciels. J'ai d'abord commencé par Malwarebytes : le logiciel se lance puis j'ai simulé le déplacement du pointeur de la souris pour mettre à jour la base de donnée puis lancer la recherche.
    Mon problème est que je souhaiterai quitter Malwarebytes quand la recherche est terminée afin de lancer un autre logiciel (Avast). Je pourrai mettre une tempo mais il doit bien y avoir une fonction pour savoir si la recherche est terminée.

    Merci d'avance pour votre aide.

    Voici mon programme :

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #include <stdio.h>
    #include <stdlib.h> //obligatoire
    #include <windows.h>
     
    int main(int argc, char * argv[])
     
    {
    //---------------------------------------
    //           Lancement Malwarebytes
    //---------------------------------------
    system("start mbam.exe");
     
    Sleep(12000);
     
    SetForegroundWindow(GetForegroundWindow());//récup handle fenêtre au premier plan
     
    POINT pt;
    SetCursorPos(0x25B,0x231);//Placement pointeur sur "Oui" puis clic (mise à jour base de données)
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
     
    Sleep(2000);
    SetForegroundWindow(GetForegroundWindow());//récup handle fenêtre au premier plan
     
    SetCursorPos(0x154,0x290);//Placement pointeur sur "Rechercher" puis clic
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
     
    //recherche terminée ? ? ?
     
    SetCursorPos(0x3BD,0x30B);//Placement pointeur sur "Quitter" puis clic
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    }

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Bonjour;

    vous pouvez ajouter un printf a la fin de votre programme pour un affichage qui indique la fin de votre programme;
    --------------------------------
    printf("fin de programme");
    getche();
    ---------------------------
    juste une réponse banale;
    bon continuité;

  3. #3
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Bonjour,

    j'ai simulé le déplacement du pointeur de la souris pour mettre à jour la base de donnée puis lancer la recherche.
    Très mauvaise façon de faire. Premièrement, il faut essayer de voir si ton logiciel ne supporte pas déjà une commande pour faire cela (une option dans la ligne de commande par exemple, ou une API en mode plus avancé). Si ce n'est pas le cas, envoie simplement un BM_CLICK au bouton que tu veux cliquer.

    je souhaiterai quitter Malwarebytes quand la recherche est terminée afin de lancer un autre logiciel
    Mais comment savoir que "la recherche est terminée" ? Concrètement, par quel moyen veux-tu que Windows te dise : "Pst! Malwarebytes a fini sa recherche !". A moins de communiquer directement avec le logiciel, cela relève de l'impossible. Tu dois donc contourner le problème: quels indicateurs te permettent de reconnaître que la recherche est terminée ? Alors tu pourras surveiller ces indicateurs et agir le moment venu.

    system("start mbam.exe");
    Jette un petit coup d'oeil aux fonctions CreateProcess, ShellExecute, etc.

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 403
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 403
    Points : 20 530
    Points
    20 530
    Par défaut
    Citation Envoyé par Didier_83 Voir le message
    Mon problème est que je souhaiterai quitter Malwarebytes quand la recherche est terminée afin de lancer un autre logiciel (Avast). Je pourrai mettre une tempo mais il doit bien y avoir une fonction pour savoir si la recherche est terminée.
    pour ce qui est des antivirus c'est quasiment impossible à faire étant donné qu'ils tournent tout le temps grâce à leur service lancé au démarrage
    (outils d'administration >>services sous Windows)
    Un anti-virus ce n'est pas seulement qu'une interface utilisateur c'est un service aussi et un service tu ne peux pas l'arrêter par programme.
    Par contre ce qu'il est possible de faire grâce aux API windows c'est d'avoir les infos des processus et programmes qui tournent

Discussions similaires

  1. Comment savoir si une replication en snapshot est terminée
    Par boby62423 dans le forum Réplications
    Réponses: 1
    Dernier message: 24/11/2012, 14h58
  2. DOS BATCH comment savoir si un programme est déjà lancé ?
    Par ritchie23 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 21/10/2008, 20h37
  3. Réponses: 12
    Dernier message: 08/07/2008, 14h34
  4. [SDL][FAQ/Source] Comment savoir si le programme est actif ?
    Par fearyourself dans le forum Contribuez
    Réponses: 3
    Dernier message: 26/07/2007, 11h34
  5. Savoir si un programme externe est déjà lancé
    Par _iri_ dans le forum Général Python
    Réponses: 4
    Dernier message: 08/10/2006, 19h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo