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

Windows Discussion :

Message Queue loop et exécutable console


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut Message Queue loop et exécutable console
    Je connais bien la programmation graphique et les files de messages sous Unix mais trés peu sous Windows.

    Voilà mon problème j'essaye de gérer la file de messages Windows mais depuis une application Console ... ?

    Autrement dit j'ai besoin d'avoir une boucle GetMessage TranslateMessage DispatchMessage mais pour un exécutable sans fenêtres ... Comment faire ?

    Je pensais écrire la fonction WinMain faisant ça, mais juste avant lancer un autre thread sur l'ancien main() de mon programme console ...

    Bref je suis un peu paumé.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    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 398
    Par défaut
    Ben... Pas besoin de faire grand-chose de particulier: Tu écris ta boucle de message et tu l'exécutes, que ce soit dans une application console ou dite "graphique"...

    Par contre, il faut qu'il y ait des messages à recevoir, ou ton application console sera bloquée sur le GetMessage(). Il ne faut pas oublier que la console elle-même n'envoie pas de messages à l'application.
    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.

  3. #3
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Merci.

    Entre temps j'avais déjà écris la boucle en question, seulement effectivement la fonction WinMain reste bloquée sur GetMessage.

    En théorie elle devrait recevoir des message car le thread que j'ai crée juste avant recoit des events DDE via une fonction de callback. En tout cas c'est ce qui est dit dans la documentation :

    Citation Envoyé par doc
    Because DDE is a message-based protocol, it employs no special Win32 functions or libraries. All DDE transactions are conducted by passing certain defined DDE messages between the client and server windows.
    ...
    An application callsSendMessage to issue the WM_DDE_INITIATE message or a WM_DDE_ACK message sent in response to WM_DDE_INITIATE. All other messages are sent byPostMessage.
    Comprends pas là où j'ai fait erreur.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    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 398
    Par défaut
    Dans tous les cas, il faut qu'il y ait une fenêtre pour recevoir le message.
    Et évidemment, elle doit être dans un thread qui a une boucle de messages.
    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.

  5. #5
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Non je ne crois pas, et ce pour 3 raisons :

    - ça doit tout de même être possible de créer une application console qui reçoit des data notify update DDE ?

    - en version console "pure" (sans boucle GetMessage) je reçoit bien l'évènement mais cependant juste avant la fin du programme. Donc preuve comme quoi même sans fenêtre les events arrivent bien sur la fonction de callback

    - DDE fait partie des mécanismes IPC, et donc de communication "Inter Processus" et pas "Inter Windows", donc normalement pas besoin de créer de Window pour bénéficier du DDE

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    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 398
    Par défaut
    Le problème, c'est que contrairement à PostMessage()/PostThreadMessage(), la fonction SendMessage() semble nécessiter une fenêtre comme destinataire, et non "juste la file de messages d'un thread".
    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.

Discussions similaires

  1. Portage de la message queue POSIX sous WINCE
    Par tonio35 dans le forum Windows
    Réponses: 2
    Dernier message: 14/02/2007, 14h51
  2. afficher un message sans empêcher l'exécution
    Par n_moalla dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/11/2006, 21h11
  3. Les messages queues et l'embarqué
    Par fveysseire dans le forum C
    Réponses: 2
    Dernier message: 29/05/2006, 13h43
  4. [MySQL] Message d'erreur à l'exécution d'une requête
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 28/02/2006, 14h06
  5. Message d'erreur à l'exécution d'une install
    Par titof dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 22/03/2005, 11h20

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