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

Visual C++ Discussion :

[Win32] Pb avec "GetMessage"


Sujet :

Visual C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    101
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 101
    Par d�faut [Win32] Pb avec "GetMessage"
    Bonjour � tous ,

    Voici mon probl�me je n'arrive pas � receptionner avec mon "GetMessage" dans mon .exe un message WM_QUITenvoy� par une DLL, je farme donc jamais mon .exe.
    J'ai essaill� d'envoyer ce m�me message � "windows m�dia player" et la pas de probl�me sa provoque bien l'arret du programme.

    voici une partie du code contenu dans mon .exe :

    ...
    HWND CourantHandle = FindWindow("ConsoleWindowClass","C:\\ProjetsMG\\toto\\Debug\\toto.exe");
    HWND hMediaplayer = FindWindow("WMPlayerApp",NULL);

    systemState = InitialisationPhase(CourantHandle); // Phase d'init de ma DLL + choix du handel cible.
    ...

    voici une partie du code contenu dans ma .dll:

    void Init(HWND hDest) // _export est sp�cifique � BCB
    {...
    PostMessage(hDest, WM_QUIT, 0, 0);
    ...
    }
    Si quelqu'un peu m'aider

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par d�faut
    Bonjour

    Je pense que ton couranthandle n'est pas bon.
    essaye plutot.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    HWND CourantHandle = FindWindow(NULL,"ConsoleWindowClass");
    cordialement

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    101
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 101
    Par d�faut
    Merci pour t'as r�ponse.

    Mais je pense que ma version est bonne puisque j'ai bien une valeur positive renvoy� dans les 2 cas par la fonction "FindWindow".*

    HWND CourantHandle = FindWindow("ConsoleWindowClass","C:\\ProjetsMG\\toto\\Debug\\toto.exe");
    HWND hMediaplayer = FindWindow("WMPlayerApp",NULL);
    CourantHandle > 0 et hMediaplayer >0

    par contre avec sa :

    HWND CourantHandle = FindWindow(NULL,"ConsoleWindowClass");
    CourantHandle == 0.

    Mais merci quand meme pour la piste

  4. #4
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Citation Envoy� par ricky78 Voir le message
    Bonjour

    Je pense que ton couranthandle n'est pas bon.
    essaye plutot.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    HWND CourantHandle = FindWindow(NULL,"ConsoleWindowClass");
    cordialement
    Plutot faire cela:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    HWND CourantHandle = FindWindow(NULL,"titre de ta fen�tre");

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    101
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 101
    Par d�faut
    Citation Envoy� par homeostasie Voir le message
    Plutot faire cela:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    HWND CourantHandle = FindWindow(NULL,"titre de ta fen�tre");
    Merci pour t'as r�ponse,

    Pour plus de pr�cision mon projet est un projet console :

    Le nom de ma fen�tre est bien "C:\\ProjetsMG\\toto\\Debug\\toto.exe" donc aucune diff�rence visiblement entre :
    HWND CourantHandle = FindWindow("ConsoleWindowClass","C:\\ProjetsMG\\toto\\Debug\\toto.exe");
    HWND CourantHandle = FindWindow(NULL,"C:\\ProjetsMG\\toto\\Debug\\toto.exe");
    Dans les deux cas :

    - CourantHandle > 0.
    - WM_QUIT n'est pas re�u par GetMessage

  6. #6
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Alors essaye plutot le message WM_CLOSE:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ::PostMessage(hConsole, WM_CLOSE, 0, 0);

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    101
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 101
    Par d�faut
    Citation Envoy� par homeostasie Voir le message
    Alors essaye plutot le message WM_CLOSE:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ::PostMessage(hConsole, WM_CLOSE, 0, 0);
    Super , un grand merci "homeostasie".
    T'as piste �tait la bonne (j'ai un peu honte d'avoir si mal cherch� )
    J'avais essailler WM_DESTROY mais sa ne fonctionnait pas.

  8. #8
    Expert confirm�

    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    4 253
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par d�faut
    Et pourquoi ne pas utiliser la fonction: PostQuitMessage() ?

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    PostQuitMessage() ne sert pas � fermer la fen�tre, mais � terminer abruptement la boucle de messages.
    On le fait g�n�ralement quand la derni�re fen�tre du thread (ou la fen�tre principale, si toutes les autres sont modales) est ferm�e.
    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.

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