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 :

[Win32] récupérer le handle de mon application console


Sujet :

C++

  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut [Win32] récupérer le handle de mon application console
    Bonjour à tous,

    voilà, j'utilise une API qui me demande le HWND de mon application. Cependant, je suis en mode console, donc (contrairement à si j'étais en mode fenêtre (subsystem window) ) je n'ai pas directement accés à mon HWND.

    J'ai trouvé différentes façons de procéder, mais aucune ne me convient.
    Par exemple, utiliser GetFocus() qui me renvoie un handle sur la fenêtre qui est sélectionnée. Mais le problème c'est que je ne suis pas certain que c'est la console de mon appli qui sera sélectionnée à ce moment là.
    J'ai fouiné également du côté de GetShellWindow(), mais appremment le handle que me renvoie cette fonction n'est pas le bon.
    Savez-vous quelle est la meilleure façon de procéder?

    Question subsidiaire: comment vérifier, en débuggant en pas à pas avec visual8, que un HWND soit effectivement celui de mon application?

    merci

  2. #2
    screetch
    Invité(e)
    Par défaut
    les applis n'ont pas de HWND, elles ont des HINSTANCE

    c'est la partie WinMain( HINSTANCE monhInstance,.........);

    HWND c'est le handle d'une fenetre, il y a des chances qu'on te demande le handle de ta fenetre principale. Dans ton cas tu n'en as pas (une console n'est pas uen fenetre, c'est certes affiche dans une fenetre mais tu pourrais avoir une console sans fenetre)

    Si tu n'en as pas tu peux normalement passer 0
    une autre solution est de passer le Desktop (GetDesktopWindow())

    la derniere solution revient a creer uen fenetre ^^

    c'est pour faire quoi que tu as besoin du HWND ? ca va ecrire dedans ?

  3. #3
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Ok.
    Le truc c'est que mon main est un main classique (int main (char*, char**)) et pas un winmain.
    Sinon, c'est une fonction de l'API que j'utilise qui me demande le HWND, mais je ne sais fichtre pas ce qu'elle en fait.
    Merci pour ces précisions, je devrais pouvoir me débrouiller


  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut
    salut,
    regarde du côté de

    HMODULE GetModuleHandle(
    LPCTSTR lpModuleName // address of module name to return handle for
    );


    HWND FindWindow(
    LPCTSTR lpClassName, // pointer to class name
    LPCTSTR lpWindowName // pointer to window name
    );

  5. #5
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    regarde si la fonction de l'api que tu veut appeler ne support pas un NULL, à la place de ton HWND. Pour MessageBox cela fonctionne.

    ps: moi je verais plutot ce post dans la catégorie programmation windows ?

  6. #6
    Invité de passage
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Par défaut Example de Projet VC++ ou avec STL
    Bonjour,

    Quelqu'un pourrait m'indiquer ou je pourrais trouver un prototype de projet avec visual C++ ?

    Des spécificités au produyit final utilisable ?

    Merci bien

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Citation Envoyé par screetch Voir le message
    une autre solution est de passer le Desktop (GetDesktopWindow())
    Raymond Chen dit NON.
    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.

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

Discussions similaires

  1. [Débutant] Récupérer le chemin de mon application
    Par amine1980 dans le forum C#
    Réponses: 3
    Dernier message: 27/09/2012, 12h08
  2. Récupérer un fichier dans mon application
    Par 1rageux dans le forum Android
    Réponses: 7
    Dernier message: 19/12/2009, 17h42
  3. Récupérer les sessions connectées à mon application DEPUIS une session
    Par touria_lahsine dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 30/05/2008, 16h33
  4. Réponses: 1
    Dernier message: 08/10/2006, 20h01
  5. Comment retrouver le handle d'une application console?
    Par Laurent Dardenne dans le forum Windows
    Réponses: 7
    Dernier message: 22/12/2004, 16h58

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