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

API, COM et SDKs Delphi Discussion :

Communiquer avec un Service


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 21
    Par défaut Communiquer avec un Service
    Bonjour,
    Je cherche à communiquer avec mon Service depuis mon application à l'aide d'un SendMessage.

    Le problème est que je ne suis pas sur que le handle que j'obtiens est le bon pour ce genre de pratique, et mon service ne reçoit apparemment pas le message.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    var
     NomService : String;
     Handle_Service,Handle_SC : SC_Handle; // handle du service
     Status_Service : TServiceStatus;
    begin
     
     Handle_SC := OpenSCManager(nil,nil,SC_MANAGER_CONNECT );
     
     if Handle_SC = 0 then
      case GetLastError of
        ERROR_ACCESS_DENIED           :  Showmessage('The requested access was denied.');
        ERROR_DATABASE_DOES_NOT_EXIST :  Showmessage('The specified database does not exist.');
        ERROR_INVALID_PARAMETER       :  Showmessage('A specified parameter is invalid.');
      end
     else
      begin
         NomService:='MonService';
         Handle_Service := OpenService(Handle_SC, PChar(NomService), SERVICE_ALL_ACCESS);
     
         If Handle_Service = 0 then
          case GetLastError of
            ERROR_ACCESS_DENIED   :  Showmessage('The handle does not have access to the service.');
            ERROR_INVALID_HANDLE  :  Showmessage('The specified handle is invalid.');
            ERROR_INVALID_NAME    :  Showmessage('The specified service name is invalid.');
            ERROR_SERVICE_DOES_NOT_EXIST :  Showmessage('The specified service does not exist.');
          end
         else
          begin
     
     
             QueryServiceStatus(Handle_Service, Status_Service);
     
     
             Memo1.Lines.Add( IntToStr( Status_Service.dwCurrentState ) );
             Memo1.Lines.Add( IntToStr( SendMessage(Handle_Service, WM_MON_MESSAGE, 0, 0 ) ) );
     
     
     
             CloseServiceHandle(Handle_Service);
          end;
     
     
      end;
    (c'est un code de test, donc volontairement pas optimisé)

    La variable Handle_Service est donc sensé contenir le handle de mon service.
    Mais je trouve pour valeur "1409848", que le service soit démarré ou non...

    Une idée ?

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 934
    Billets dans le blog
    6
    Par défaut
    regarde ce thread : il y a un lien dans le 10° message avec une solution : http://www.phidels.com/php/index.php...rum/index.php3
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 21
    Par défaut
    Je ne devrais pas changer de pseudo entre les forums ^^
    J'ai oublié de poster ici la même réponse que sur celui de phidels.
    Donc pour ceux que ça interesse, la solution se trouve ici :
    http://delphi.about.com/od/windowsshellapi/l/aa093003a.htm

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/06/2009, 16h34
  2. Web service pour communiquer avec jBPM
    Par Invité dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 26/02/2009, 11h40
  3. communiquer avec les objets d'un service
    Par rangdalf dans le forum Windows Communication Foundation
    Réponses: 8
    Dernier message: 19/01/2009, 13h58
  4. communiquer un IHM (asp.net ) avec un service windows
    Par nb_fr31 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/03/2008, 20h30
  5. Créer un service Web et communiquer avec une application lourde
    Par fabseven dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 10/03/2008, 20h22

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