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

Threads & Processus C++ Discussion :

Trouver le handle d'un processus


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Par défaut Trouver le handle d'un processus
    Je m'essaye au C++ en essayant d'apprendre sur le tas, je sais que ce n'est pas ce qu'il y a de mieux mais je fais avec ^^ .

    J'essaye des bout de code si ca fonctionne j'essaye de les modifier en faite j'apprends mieux comme ca ( même si je reconnais qu'il faut quelque base .)

    Sur un site j'ai trouvé un code qui permettrait de trouvé le handle d'une fenetre au premier plan grace à un : GetForegroundWindow() .

    Petite question de débutant ( je vais me faire lyncher ^^ ) a quoi servent les () à la fin de la commande ? J'ai cru comprendre que c'est pour mettre des paramètres mais sachant que cette commande n'en nécessite pas je ne vois pas pourquoi les mettre .

    Avoir le handle d'une fenetre en premier temps c'est bien mais avoir le handle d'une fenetre donné c'est mieux !

    J'ai donc trouvé ce code qui permet d'avoir le Handle de windows media player

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <windows.h>
    #include <stdio.h>
    int main(int argc, char * argv[])
    {
         HWND hMediaplayer = FindWindow("Media Player 2",NULL);
         printf("le handle de la fenêtre de media player 2 est : 0x%X",hMediaplayer);
         return 0;
    }
    Bien sur ce code fonctionne .

    La ou le probléme réside c'est que j'ai voulu qu'il me donne le Handle de Firefox

    Le deuxieme parametre permet apparement de chercher le handle en spécifiant une partie du nom de la fenetre .

    J'ai donc modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <windows.h>
    #include <stdio.h>
    int main(int argc, char * argv[])
    {
         HWND hFF = FindWindow("Firefox","Firefox");
         printf("le handle de la fenêtre de Firefox est : 0x%X",hFF);
         return 0;
    }
    Le programe s'éxécute mais ne me donne pas l'handle .

    Pourriez vous m'aider ?

    Je vous remercie d'avance je sais que ca fait apprentit sorcier mais disons que je m'occupe la soirée comme ca

  2. #2
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Salut,
    Citation Envoyé par geek-59600 Voir le message
    Petite question de débutant ( je vais me faire lyncher ^^ ) a quoi servent les () à la fin de la commande ?
    C'est pour indiquer que tu fais appel à une fonction.

    Pour ce que tu cherches à faire, c'est le premier paramètre de FindWindow() qui doit être NULL, et le deuxième sera le titre de la fenêtre que tu chercher à récupérer.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Pour obtenir l'id de processus à partir d'une fenêtre, on utilise la fonction GetWindowThreadProcessId().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Par défaut
    Citation Envoyé par spoutspout Voir le message
    Salut,C'est pour indiquer que tu fais appel à une fonction.

    Pour ce que tu cherches à faire, c'est le premier paramètre de FindWindow() qui doit être NULL, et le deuxième sera le titre de la fenêtre que tu chercher à récupérer.
    Donc j'avais bien interprété .

    Mais il se trouve que même comme ca, ca ne fonctionne pas

    J'ai essayé avec firefox en métant dans le deuxième paramètre "firefox" "Firefox" et même "Mozilla Firefox" sans résultat .

    J'ai ouvert notepad et j'ai mis en deuxième paramètre "Sans titre - Bloc-notes" ca ne fonctionne pas non plus .

    Auriez vous une idée ?

    Merci d'avance .

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    La classe de fenêtre de Notepad s'appelle simplement "notpad".
    Celle de Firefox s'appelle "MozillaUIWindowClass" pour les fenêtres principales, et "MozillaWindowClass" pour leurs sous-fenêtres.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Par défaut
    J'ai trouvé .

    Erreur de débutant ^^ le premier paramettre NULL je l'avais laissé entre guillemet ^^ .

    Non pas le fouet ^^

    Maintenant je voudrais juste que le caractére a s'ajoute dans notepad :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <iostream>
    #include <windows.h>
    #include <stdio.h>
    int main(int argc, char * argv[])
    {
         HWND hNTP = FindWindow(NULL,"Sans titre - Bloc-notes");
         printf("le handle de la fenêtre de notepad est : 0x%X \n",hNTP);
         system("pause");
         SetForegroundWindow(hNTP);
         Sleep(100);
         PostMessage(hNTP,WM_KEYDOWN,VK_A,0);
         Sleep(5000);
         PostMessage(hNTP,WM_KEYUP,VK_A,0);
         return 0;
    }
    Mais j'ai droit à : `VK_A' was not declared in this scope| et meme en remplacant VK_A par A meme erreur :s

    En warning j'ai ca aussi mais apparement ca géne pas la compilation : warning: unsigned int format, HWND arg (arg 2)|

  7. #7
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Citation Envoyé par geek-59600
    Je m'essaye au C++ en essayant d'apprendre sur le tas, je sais que ce n'est pas ce qu'il y a de mieux mais je fais avec ^^ .
    J'essaye des bout de code si ca fonctionne j'essaye de les modifier en faite j'apprends mieux comme ca
    En gise de C++ tu n'as pas choisi le meilleur exemple !

    Citation Envoyé par geek-59600
    ( même si je reconnais qu'il faut quelque base .)
    Je pense que tu devrais commencer pas là.

    Citation Envoyé par geek-59600
    Petite question de débutant ( je vais me faire lyncher ^^ ) a quoi servent les () à la fin de la commande ?
    Ce referer à ma remarque precedente.
    entre parentaises(Ce n'est pas une commande mais une fonction.)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Par défaut
    J'ai déja fais un peu de Basic sur MO5 ( on rigole pas j'avais 8 ans à l'époque ! ) un peu de VBS aussi disons que ca m'occupe les soirée pour ca que je fais ca sur le tas quand j'en aurais marre je passerai a autre chose ^^

    La je viens de me reseigner sur la librairie OpenCV qui à l'air de proposé des truc sympa mais rien que pour l'installation avec code block je misére ^^

    M'enfin ca m'occupe ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/05/2010, 10h55
  2. Réponses: 6
    Dernier message: 01/10/2009, 17h46
  3. Trouver le Pid d'un processus qui appelle un programme
    Par samlecas dans le forum Débuter
    Réponses: 3
    Dernier message: 14/01/2009, 14h10
  4. [VB.NET] Trouver un handle, simuler clic sur bouton
    Par 6su7 dans le forum Windows Forms
    Réponses: 33
    Dernier message: 21/08/2006, 09h38

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