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 :

Tservice démarrage automatique


Sujet :

API, COM et SDKs Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Tservice démarrage automatique
    Bonjour,
    J'ai réalisé des services qui doivent se lancer avant que le premier utilisateur se connecte.
    Le démarrage automatique ne se fait pas (Temps de démarrage > 30000 ms dans l'observateur d'évènement)
    Pour analyser le problème, J'ai retiré tout traitement.
    J'obtiens un service qui se lance bien lorsqu'on fait démarrer, mais ne se lance pas au démarrage du PC
    Ceci ne se passe que sur Windows 7.
    Ca démarre normalement sur Windows 8.
    Une piste ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Il prend beaucoup de temps mais il démarre
    C'est l'OS qui détermine l'ordre de démarrage des services (et il y en a beaucoup) et il n'est pas possible d'en rendre un prioritaire. Je ne pense pas que tu puisses faire grand chose...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    C'est curieux, car sous windows 8 ça se passe normalement, il démarre en automatique

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par magil Voir le message
    C'est curieux, car sous windows 8 ça se passe normalement, il démarre en automatique
    Quels sont les traitements ?
    Le service possède-t-il pour chacun des SE des droits adéquats ?
    Philippe.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Pour simplifier le problème, j'ai retiré tous les traitements :
    J'ai mis // dans le oncreate
    J'ai mis started := true dans le onstart, etc..

  6. #6
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Le problème est ailleurs. Sur Windows 7, mes services démarrent normalement et instantanément que ce soit en automatique ou en manuel.

    Pour le temps de démarrage du service, il faudrait voir le contenu du execute.
    Pour le service qui ne démarre pas, ça ne serait pas le fait d'avoir un execute vide qui fait que le service se termine?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Citation Envoyé par magil Voir le message
    Le démarrage automatique ne se fait pas (Temps de démarrage > 30000 ms dans l'observateur d'évènement)
    Le démarrage prend 30s mais le service est bien lancé automatiquement
    Il n'est pas possible de comparer le démarrage manuel de ce seul service depuis le bureau et le démarrage à froid du PC qui doit en lancer plusieurs dizaines.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    En fait, le execute a un code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    repeat
      sleep(100);
    until 1 = 0;
    Pour le démarrage avec tous les services windows,
    - sous windows 8 tout démarre normalement
    - sous windows 7, le service ne démarre pas, même si on augment le tende de démarrage à 120 s.

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Quelle horreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TService1.ServiceExecute(Sender: TService);
    begin
      while not Terminated do
        ServiceThread.ProcessRequests(True);
    end;

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Je n'ai pas de ServiceThread.

    en remplaçant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    repeat
    sleep(100);
    until terminated;
    ça ne change rien

  11. #11
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Citation Envoyé par magil Voir le message
    Je n'ai pas de ServiceThread.
    Ce qui serait surprenant puisque c'est lui qui lance OnExecute. Tu utilises bien le service Delphi de base ou une autre implémentation comme TDDService ?
    Là, tu ne lui donnes pas la possibilité de traiter les messages qu'il reçoit.

    Utilise LogMessage pour ajouter des entrées dans l'observateur d'événements.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    J'ai simplifier encore, et j'ai résolu 1 problème :
    Le service de détection des services interactif doit être mis en automatique sur windows 7 pour que je n'ai plus de message d'erreur dans l'observateur d'évènement.
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    type
      TSimple_service = class(TService)
        Timer1: TTimer;
        procedure ServiceStart(Sender: TService; var Started: Boolean);
        procedure Timer1Timer(Sender: TObject);
        procedure ServiceStop(Sender: TService; var Stopped: Boolean);
      private
        { Déclarations privées }
        nb_son : integer;
      public
        function GetServiceController: TServiceController; override;
        { Déclarations publiques }
      end;
     
    var
      Simple_service: TSimple_service;
     
    implementation
     
    {$R *.DFM}
     
    procedure ServiceController(CtrlCode: DWord); stdcall;
    begin
      Simple_service.Controller(CtrlCode);
    end;
     
    function TSimple_service.GetServiceController: TServiceController;
    begin
      Result := ServiceController;
    end;
     
     
     
    procedure TSimple_service.ServiceStart(Sender: TService; var Started: Boolean);
    begin
      nb_son := 0;
      timer1.Enabled := true;
      Started := True;
    end;
     
    procedure TSimple_service.ServiceStop(Sender: TService; var Stopped: Boolean);
    begin
      Stopped := true;
    end;
     
    procedure TSimple_service.Timer1Timer(Sender: TObject);
    begin
      if nb_son < 10 then
      begin
        inc(nb_son);
        Try
          logmessage('simple_service',EVENTLOG_INFORMATION_TYPE,0,nb_son);
          PlaySound('C:\Windows\Media\Ring05.wav', 0, SND_SYNC);
        except
           if fileexists('C:\Windows\Media\Ring05.wav') then
             logmessage('simple_service',EVENTLOG_INFORMATION_TYPE,0,20)
           else
             logmessage('simple_service',EVENTLOG_INFORMATION_TYPE,0,21);
     
        End;
      end
      else
        Timer1.Enabled := false;
    end;
    Normalement, il doit jouer 10 fois le son.
    Sous Windows 8, c'est ce qui arrive.
    Sous Windows 7, il démarre normalement, les messages 1 à 10 sont bien dans l'observateur d'évènement, mais pas de son

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Finalement, le service démarre automatiquement si l'installation se fait par Execute C:\xxxx\Monservice.exe /Install.
    Bizarre, dans le logiciel ou je l'installe, ça fonctionne sous windows 8, mais pas sous windows 7.

    Il me reste le problème du son : Playsound fonctionne sous Windows 8, mais pas sous windows 7. Sous windows 7, le plays sound fonctionne dans un programme sous un utilisateur lambda.

Discussions similaires

  1. Démarrage automatique des services
    Par barrique dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/07/2008, 09h40
  2. démarrage automatique d'application
    Par velociraptor5679 dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 07/06/2006, 10h03
  3. [OEM] démarrage automatique
    Par lido dans le forum Oracle
    Réponses: 1
    Dernier message: 02/01/2006, 11h07
  4. [Windows XP][Service] Pb démarrage automatique
    Par joefou dans le forum Windows XP
    Réponses: 5
    Dernier message: 14/10/2005, 09h03
  5. [Windows XP][Démarrage]Démarrage automatique d'un programme
    Par Jean Claude90 dans le forum Windows XP
    Réponses: 5
    Dernier message: 02/03/2005, 12h55

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