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 :

comment utiliser une dll d'un programme en cours d'éxecution?


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut comment utiliser une dll d'un programme en cours d'éxecution?
    Bonjour,

    je suis face à ce pb:
    j'ai une application (que je ne peux pas modifier) qui lance un programme P1
    P1 fait des acquisitions de données donc à 2 état:
    -en cours d'aquisition
    -stoppé

    j'aimerai programmer une application qui réccupère l'état de P1.
    Comment faire?
    je ne sais piloter le programme P1 via sa dll que si je crée un nouveau processus :-(

    Suis-je clair?

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonjour

    Citation Envoyé par titoum Voir le message
    ,

    Suis-je clair?
    Pas du tout

    Qu'expose P1 comme méthode de contrôle ? (IPC divers ou autre)

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    stoppé
    Dans cet état le processus tourne toujours ?

    Qu'est ce que tu veux faire ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Ok, je recommence avec des exemples précis:

    j'ai un logiciel (TestStand) qui execute un logiciel (CANape.exe)

    CANape est un soft qui fait de l'acqui de données: les états sont
    -en cours d'aquisition
    -stoppé (processus tjs en cours d'execution)

    Si je lance moi meme CANape, je sais le piloter via les composants COM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //dll du soft
    using CANAPELib;
     
            private CANAPELib.ApplicationClass mApplication;
            private CANAPELib.Measurement mMeasurement;
     
    mApplication = new CANAPELib.ApplicationClass();
     
    //démarre CANape en chargeant un fichier *.A2L
    mApplication.Open1("USM_A2L_PAth.A2L", 1, 200000, 0);
     
    // lance l'aqui des données
    mMeasurement.Start();
    Mais comment faire la même chose si c'est un autre logiciel qui lance CANape? (je veux pouvoir le piloter alors qu'il est déjà en cours d'execution)
    je ne sais pas "prendre la main" sur le processus déjà en cours d'execution

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Qui a lancé en premier le soft ?
    N'importe qui ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Qui a lancé en premier le soft ?
    N'importe qui ?
    oui, un logiciel quelconque

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bon bah alors tu ne peux le faire que si ton soft l'a prévu.

    Sinon faut que tu crée un soft qui le lance, et qui continue de s'executer, et qui expose des méthodes de l'objet Process pour le piloter.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par ced600 Voir le message
    expose des méthodes de l'objet Process pour le piloter.
    Peux-tu m'en dire plus sur ce point?
    si je veux faire ça en C#, je dois utiliser quelle methode?

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bah je ne l'ai pas fait donc je ne pourrais pas te donner les classes à utiliser.

    Mais en gros je connais deux moyens pour exposer directement des méthodes d'un objet :

    1) WebService -> Donc faut un server (apache + tomcat) -> pour exposer les méthodes sur un réseau.

    2) Faire un objet COM/DCOM -> Utiliser google pour avoir plus d'info

    Sinon après tu peux créer ta propre méthode de communication entre ton programme supervisant le process et tout autres programme qui souhaite demander des requêtes au superviseur :

    1) Base de données. -> pas top.

    2) Base de registre. -> Solution utilisé par certain soft mais plus pour sauver des vlaeurs et les recharger au prochain reboot.

    3) Fichier texte -> le plus simple, mais le moins pro -> fait un peu brouillont et débutant, et cela prends des ressources d'ouvrir un fichier et de le fermer, et faut gérer que 2 process n'ouvrent pas le même fichier en même temps, ça c moins simple, un des moyen et d'augmenter le nombre de fichier (info dans le nom du fichier)

    4) Créer des ports TCP/IP (ou autre protocole) pour permettre à ton programme superviseur de communiquer avec n'importe qui via ces ports. -> Solution assez correcte mais plus difficille à mettre en place.
    Bien que ce n'est aps si compliqué que cela en C#.

    Peut être que le moyen le plus simple pour toi et d'utiliser les fichiers. Si ton programme superviseur n'a qu'à réagir à 3-4 instructions, tu crées un rep, et dedans tes programmes voulant demander des actions à ton prog de supervision créer dans le rep un fichier ayant pour nom l'action à faire.

    Exemple :
    Un programme crée le fichier de nom restart.txt.
    Le programme de supervision découvre qu'il y a un nouveau fichier, il lit le titre et execute l'action -> restart du process.
    Puis il détruit le fichier.
    Le programme l'ayant créer s'aperçoit que le fichier à disparus, donc il sait que l'action à été effectué.

    Ce n'est pas le meilleur moyen mais peut être le plus simple à mettre en place.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Un programme crée le fichier de nom restart.txt.
    Le programme de supervision découvre qu'il y a un nouveau fichier, il lit le titre et execute l'action -> restart du process.
    Puis il détruit le fichier.
    Le programme l'ayant créer s'aperçoit que le fichier à disparus, donc il sait que l'action à été effectué.
    Je vais commencer par ça puis voir pour la création d'un COM/DCOM
    Merci bcp

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Lecture rapide.

    Je suis impressionné

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci surtout à toi pour tes interventions

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/06/2007, 15h40
  2. [COM] Comment utiliser une dll DotNet dans un projet win32 ?
    Par Marmottoc dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 05/05/2006, 15h58
  3. [Langage]Comment utiliser une dll .NET dans VB6?
    Par BouB dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/04/2006, 14h20
  4. comment utiliser une DLL win32 en C??
    Par Jayceblaster dans le forum C
    Réponses: 8
    Dernier message: 31/03/2006, 12h49

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