Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lancer un processus?

    23 juillet 2007 à 13:10:47

    Bonjour,

    J'aimerai savoir, si, en C++, il est possible de lancer seulement un processus, au lieu d'un logiciel?

    Merci,
    Pfranco
    • Partager sur Facebook
    • Partager sur Twitter
      23 juillet 2007 à 13:45:33

      Salut
      Du moment où tu lance un programme il se charge en mémoire (RAM) donc il n'est plus appelé programme mais processus. Donc tu est obligé de lancer un processus.

      Processus = Instance de programme en cours d’exécution
      Programme = fichier statique
      • Partager sur Facebook
      • Partager sur Twitter
        23 juillet 2007 à 14:18:17

        Peut-être que tu entend par programme la partie visible du processus.

        En fait, tu demande si il est possible de faire tourner un programme en arriére-plan (enfin, c' est comme ça que je le comprend :-° )

        Oui : il suffit de modifier le type de l' application de "Console Application" à "WinAPI Application" (Ou quelque chose comme ça, selon ton compilos)

        Pour faire ça sous C::B, tu clique sur ton projet avec le bouton droit, puis clique sur "proprieté", puis le deuxiéme onglet. (Si je me souvient bien)
        • Partager sur Facebook
        • Partager sur Twitter
          23 juillet 2007 à 14:58:52

          Sinon tu utilises un(e?) API GUI sans créer de fenêtre! Alors ton programme tournera en arrière plan
          • Partager sur Facebook
          • Partager sur Twitter
            23 juillet 2007 à 15:11:15

            Pas besoins d' utiliser une API GUI pour ne pas créer de fenêtre...

            Pourquoi pas utiliser Ogre pour ne pas créer d' application 3D?
            • Partager sur Facebook
            • Partager sur Twitter
              23 juillet 2007 à 15:44:57

              Enfait je pensais à QT car elle permet de faire d'autres choses
              • Partager sur Facebook
              • Partager sur Twitter
                23 juillet 2007 à 18:57:34

                sous Windows on appel ca des Services, plusieurs logiciels serveur fonctionne de cette manière ( les SGBD par exemple ).

                C'est faisable mais est-ce vraiment nécessaire?
                Tu peux aussi démarrer une application console et demander à windows de la cacher... ou de la réduire dans le "systray" avec l'API Win32
                • Partager sur Facebook
                • Partager sur Twitter
                  24 juillet 2007 à 9:06:48

                  Merci.

                  MatteX : comment?

                  Pfranco
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 juillet 2007 à 14:11:30

                    Exemple tiré de l'appliquation Winapi par défaut de codeblocks

                    #include <windows.h>

                    /*  Declare Windows procedure  */
                    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

                    /*  Make the class name into a global variable  */
                    char szClassName[ ] = "Fenêtre cachée";

                    int WINAPI WinMain (HINSTANCE hThisInstance,
                                         HINSTANCE hPrevInstance,
                                         LPSTR lpszArgument,
                                         int nCmdShow)
                    {
                        HWND hwnd;               /* This is the handle for our window */
                        MSG messages;            /* Here messages to the application are saved */
                        WNDCLASSEX wincl;        /* Data structure for the windowclass */

                        /* The Window structure */
                        wincl.hInstance = hThisInstance;
                        wincl.lpszClassName = szClassName;
                        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
                        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
                        wincl.cbSize = sizeof (WNDCLASSEX);

                        /* Use default icon and mouse-pointer */
                        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
                        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
                        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
                        wincl.lpszMenuName = NULL;                 /* No menu */
                        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
                        wincl.cbWndExtra = 0;                      /* structure or the window instance */
                        /* Use Windows's default colour as the background of the window */
                        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;


                        /* Register the window class, and if it fails quit the program */
                        if (!RegisterClassEx (&wincl))
                            return 0;

                        /* The class is registered, let's create the program*/
                        hwnd = CreateWindowEx (
                               0,                   /* Extended possibilites for variation */
                               szClassName,         /* Classname */
                               "Code::Blocks Template Windows App",       /* Title Text */
                               WS_OVERLAPPEDWINDOW, /* default window */
                               CW_USEDEFAULT,       /* Windows decides the position */
                               CW_USEDEFAULT,       /* where the window ends up on the screen */
                               544,                 /* The programs width */
                               375,                 /* and height in pixels */
                               HWND_DESKTOP,        /* The window is a child-window to desktop */
                               NULL,                /* No menu */
                               hThisInstance,       /* Program Instance handler */
                               NULL                 /* No Window Creation data */
                               );





                       /*c'est ici que tout ce passe la défine SW_HIDE te permet de cacher la fenêtre*/
                       ShowWindow (hwnd, SW_HIDE);







                        /* Run the message loop. It will run until GetMessage() returns 0 */
                        while (GetMessage (&messages, NULL, 0, 0))
                        {
                            /* Translate virtual-key messages into character messages */
                            TranslateMessage(&messages);
                            /* Send message to WindowProcedure */
                            DispatchMessage(&messages);
                        }

                        /* The program return-value is 0 - The value that PostQuitMessage() gave */
                        return messages.wParam;
                    }


                    /*  This function is called by the Windows function DispatchMessage()  */

                    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                    {
                        switch (message)                  /* handle the messages */
                        {
                            case WM_DESTROY:
                                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                                break;
                            default:                      /* for messages that we don't deal with */
                                return DefWindowProc (hwnd, message, wParam, lParam);
                        }

                        return 0;
                    }
                     
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 juillet 2007 à 13:03:35

                      Merci, mais cela ne lance pas qu'un processus...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 juillet 2007 à 14:07:36

                        Tu veux faire quoi exactement? De la programmation multi-tâche (multi threading),lancer un programme externe?
                        Car pour l'instant tu restes très flou...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 juillet 2007 à 8:41:18

                          Je veut lancer une tache de fond(processus)..

                          Merci
                          • Partager sur Facebook
                          • Partager sur Twitter
                            29 juillet 2007 à 15:42:08

                            Parce que le code de saphir épluche des patates ? Il lance bien un processus, qui s'exécute en tache de fond, je vois pas où est le problème.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              31 juillet 2007 à 11:56:38

                              Tu veux peut-être parler de thread ?
                              Par exemple, écouter sur un port pendant que ton thread principal trie des fichiers, sans avoir à faire une boucle où tu exécutes un peu de la première et un peu de la deuxième tâche successivement.

                              Regarde du côté de boost::thread, QThread, ...
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Lancer un processus?

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown