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 Forms Discussion :

[c#] communiquer entre les instances d'une appli


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 106
    Points
    106
    Par défaut [c#] communiquer entre les instances d'une appli
    bonjour

    Mon application permet de se fermer (pas se descendre dans la barre des tâches). Elle reste quand même active dans ce sens qu'elle fonctionne en arrière-plan. Ensuite, il est possible de la ramener (de rendre visible la fenêtre) en double-cliquant sur l'icône qu'elle met en place dans le SystemTray. Seulement mon appli offre la possibilité de cacher cette icône du systray, donc quand elle run en arrière-plan, il n'y a pas de moyen apparent de la ramener. On peut toujours aller dans le Task Manager et tuer le processus soi-même. Mais ça ne résout pas le problème. L'instance de l'appli qui tournait n'est pas récupérée. Voilà, j'avais déjà écrit cette appli en Java et j'avais implémenté ce système (qui marchait parfaitement, soi-dit en passant). Je vous l'explique en espérant être assez clair :
    1. À son lancement, l'appli essaie de créér un serveur sur un certain port réseau, s'il est déjà occupé, c'est qu'une autre instance de cette appli tourne déjà. Alors, il essaie de se connecter à ce port dans un client TCP. Il envoie ensuite un message au serveur de l'appli via le port lui disant de se montrer. L'appli, si elle est invisible, se montre. Ensuite, le processus qui a créé le client se tue lui-même, afin de ne pas créer une 2eme instance de l'appli inutile. Revenons au test du point 1: si le port est libre, l'appli occupe et écoute le port et fonctionne normalement. Voilà.
    J'ai essayé de plusieurs façons de récréer ce système en C# mais ça ne marche jamais. Si mon explication a été assez claire et que vous la comprenez, pouvez-vous m'indiquer un moyen de réaliser ceci en C#?

    Un gros merci d'avance à celui qui saura me répondre.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 106
    Points
    106
    Par défaut
    personne peut m'aider ??

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 59
    Points : 80
    Points
    80
    Par défaut
    Salut,

    Si je devais réaliser un système permettant de restaurer une appli qui n'est plus apparente à l'utilisateur lorsqu'on tente de lancer une 2ème instance, je ferai ainsi :
    - vérifier si une instance de mon appli existe déjà
    - si oui, réactiver l'IHM via les API Windows (je ne connais pas encore d'API.NET permettant de faire ceci).

    Toute la démarche et le code C# est ici : http://www.c-sharpcorner.com/FAQ/Cre...tanceAppSC.asp

    Si tu souhaites quand même passer par un système client/serveur, il va falloir être plus précis dans ta question: quel problème rencontres-tu ?

    @ +

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 106
    Points
    106
    Par défaut
    merci ça fonctionne de cette façon. Il y a juste un problème, qui doit se résoudre assez facilement : aucune " MainWindow" n'est définie pour mon programme. C'est-à-dire qu'il y en a une, mais il ne le sait pas, de telle sorte que MainWindowHandle me retourne un résultat incohérent et non le handle de ma fenêtre "principale". Donc, comment faire pour que ma fenêtre soit considérée comme la "MainWindow ? Il doit y avoir une simple instruction à accomplir.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 106
    Points
    106
    Par défaut
    autre question inutile par simple curiosité, qu'est-ce que le IHM ? Ça peut toujours être utile de le savoir.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 59
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par damned3
    merci ça fonctionne de cette façon. Il y a juste un problème, qui doit se résoudre assez facilement : aucune " MainWindow" n'est définie pour mon programme. C'est-à-dire qu'il y en a une, mais il ne le sait pas, de telle sorte que MainWindowHandle me retourne un résultat incohérent et non le handle de ma fenêtre "principale". Donc, comment faire pour que ma fenêtre soit considérée comme la "MainWindow ? Il doit y avoir une simple instruction à accomplir.
    Pas d'idée, dsl...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 59
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par damned3
    autre question inutile par simple curiosité, qu'est-ce que le IHM ? Ça peut toujours être utile de le savoir.
    L'IHM c'est "Interface Homme Machine". C'est un joli mot (et surtout plus court ) pour parler de ton interface graphique.

Discussions similaires

  1. OLE pour communiquer entre différente instance d'une application
    Par justgreat dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 12/12/2009, 20h59
  2. [WinForms]limiter les instances d'une appli (calculatrice windows)
    Par khamett dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 23/11/2006, 12h50
  3. Réponses: 4
    Dernier message: 29/09/2005, 11h50
  4. Réponses: 1
    Dernier message: 23/08/2005, 14h07
  5. Communiquer entre plusieurs instances d'applications
    Par bourinator dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/09/2003, 11h24

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