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++Builder Discussion :

Application Service [FAQ]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    32
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Par d�faut [Resolu]Application Service
    Bonjour,
    j'aimerai savoir comment lancer, mais surtout arreter (oui, parce que pour lancer, il suffit de faire un ShellExecute) une application service.
    Ce serai pour gerer mes serveurs Apache, MySQL et SMTP

  2. #2
    Membre �prouv�
    Avatar de Alacazam
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 88
    Par d�faut
    Salut,

    Je ne sais pas si �a r�pond � la question, mais tu peux aller voir ici :
    http://www.developpez.net/forums/vie...hlight=#229238

    Selon ce que tu veux faire, le Timer peut �tre utile ou non ...

    En esp�rant avoir pu t'aider
    Bonne Continuation
    Mathieu

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    32
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Par d�faut
    peut etre que je me trompe, mais aucune fenetre n'est ouverte pour une application service, donc je ne pourrait pas trouver le Handle de la fenetre avec :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    HWND HandleF = FindWindow("About", "#32770");
    comme dans ton code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    HWND HandleF = FindWindow("About", "#32770"); 
    if (HandleF) { 
       PostMessage(HandleF, WM_CLOSE, NULL, NULL); 
       Timer1->Enabled = false; 
       }

  4. #4
    Membre �prouv�
    Avatar de Alacazam
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 88
    Par d�faut
    Salut,

    C'est peut-�tre moi qui me trompe sur la d�finition d'Application Service ...

    Si aucune fen�tre n'est r�ellement cr��e, je ne sais pas si FindWindow permet aussi d'acc�der aux processus en cours ...
    Essaye quand m�me ;
    Si cela ne marche pas, je te poste ce soir une proc�dure de CALLBACK qui pemet d'�num�rer toutes les fen�tres actives, ainsi que les processus.

    Bonne Chance
    Mathieu

  5. #5
    Membre �prouv�
    Avatar de Alacazam
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 88
    Par d�faut
    Finalement, j'ai retrouv� �a

    Unit1.h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    bool CALLBACK EnumWindowsProc(HWND hWnd, TListView *ListView); 
    class TForm1 : public TForm 
    { 
      __published:
        TListView *ListView1; 
        TButton *Button1; 
        void __fastcall Button1Click(TObject *Sender);
      private:
      public:
        __fastcall TForm1(TComponent* Owner);
    };
    Unit1.cpp
    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
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      ListView1->Items->Clear();
      EnumChildWindows(GetDesktopWindow(),(WNDENUMPROC)EnumWindowsProc,(LPARAM)ListView1);
      EnumWindows((WNDENUMPROC)EnumWindowsProc,(LPARAM)ListView1);
      EnumDesktopWindows(NULL,(WNDENUMPROC)EnumWindowsProc,(LPARAM)ListView1);
    }
     
    bool CALLBACK EnumWindowsProc(HWND hWnd, TListView *ListView)
    {
      char WindowName[80], ClassName[80];
      GetWindowText(hWnd, WindowName, 80);
      GetClassName(hWnd, ClassName, 80);
      ListView->Items->Add();
      int i=ListView->Items->Count-1;
      ListView->Items->Item[i]->Caption=AnsiString(WindowName);
      ListView->Items->Item[i]->SubItems->Add(AnsiString(ClassName));
      ListView->Items->Item[i]->Update();
      return true;
    }
    Ensuite, tu reconnais ton processus ... et le tour est jou�

    Je pense que �a devrait convenir

    Bonne Continuation
    Mathieu

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    32
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Par d�faut
    Moi j'ai trouv� �a, je pense que ca correspond mieux, mais j'arrive pas � me servir de la structure SERVICE_STATUS du ServiceControl. J'ai trouv� ces infos dans l'aide du Windows SDK, � Service Functions :

    voila ce que j'ai fais :
    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "monitor.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    SC_HANDLE schandle, startApache, stopApache;
    SERVICE_STATUS *service_status;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    schandle=OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    startApache=OpenService(schandle, "Apache", SERVICE_START );
    StartService(startApache, NULL, NULL);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    stopApache=OpenService(schandle, "Apache", SERVICE_STOP);
    ControlService(stopApache, SERVICE_CONTROL_STOP, service_status);
    }
    Button1 pour D�marrer, et ca marche !
    Button2 pour arreter, mais ca marche pas!

  7. #7
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    tu a oubli� un l�ger d�tail,
    tu dois ouvrir le service avec la possibilit� de D�marrer,Arr�ter, interroger l'�tat du Service

    utilise le code suivant

    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
     
    SERVICE_STATUS OpenServStatus;
    SC_HANDLE  schandle; Fservice;
    schandle=OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); 
    Fservice=OpenService(schandle,
                            "Apache", SERVICE_QUERY_STATUS|SERVICE_START|SERVICE_STOP);
     
    // maintenant pour démarre le Service
     
    StartService(Fservice,NULL,NULL);
     
    // pour le Stopper
    ControlService(FWatchService,
                         SERVICE_CONTROL_STOP,
                         &OpenServStatus);
    Avec mes Salutations
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    32
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Par d�faut
    merci, ca marche maintenant

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. probl�me application service
    Par zoheir13 dans le forum Delphi
    R�ponses: 2
    Dernier message: 16/05/2007, 18h13
  2. ecriture base de registre dans application service
    Par zoheir13 dans le forum Delphi
    R�ponses: 1
    Dernier message: 16/05/2007, 17h42
  3. Application Service Windows
    Par Neo41 dans le forum Visual C++
    R�ponses: 9
    Dernier message: 10/05/2007, 10h22
  4. R�ponses: 5
    Dernier message: 18/05/2006, 11h37
  5. Inscrire une application service ds le journal d'�v�nements
    Par laadhar dans le forum API, COM et SDKs
    R�ponses: 1
    Dernier message: 30/01/2006, 21h01

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