Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction qui donne l'emplacement de nôtre program?

Sujet résolu
    17 février 2017 à 22:08:54

    J'aimerais ajouter mon programme au startup en utilisant les keys mais pour la fonction RegSetValueEx() qui est :

    RegSetValueEx(
                  key,
                  name,
                  0,
                  REG_SZ,
                  (BYTE*)path,
                  strlen(path)+1
                  );

    Mais si quelqu'un utiliser nôtre programme le programme ne s'aura pas l'emplacement du programme ainsi il ne saura pas quoi mettre dans "path" alors est ce qu'il y a une Fonction qui donne l'emplacement de nôtre programme ?

    • Partager sur Facebook
    • Partager sur Twitter
      17 février 2017 à 23:19:37

      Bonjour,

      Il faut d'abord mettre le main sous la forme suivante :

      int main(int argc, char *argv[])


      argv[0] est ainsi le chemin complet de ton programme.

      • Partager sur Facebook
      • Partager sur Twitter

      Mon jeu multi online gratuit : https://gamejolt.com/games/space-war/482884

        17 février 2017 à 23:31:53

        Non, *argv ne fournit pas le chemin complet ( en tous cas pas chez moi ), essaye ceci :

        #include <stdio.h>
        #include <stdlib.h>
        #include <unistd.h>
        #include <limits.h>
        
        int
        main(int argc, char ** argv) {
        	char buffer[PATH_MAX + 1] = {0};
        
        	getcwd(buffer, PATH_MAX + 1);
        
        	puts(buffer);
        
        	return (EXIT_SUCCESS);
        }

        Tu aurais pu chercher sur Internet tu aurais eu la réponse.

        -
        Edité par ASW_ 17 février 2017 à 23:34:20

        • Partager sur Facebook
        • Partager sur Twitter
          17 février 2017 à 23:40:25

          Bonjour,

          Sous windows en tous cas argv[0] donne bien le chemin complet de l'executable.

          Et comme il veut modifier le registre j'ai supposé qu'il était sous Windows...

          • Partager sur Facebook
          • Partager sur Twitter

          Mon jeu multi online gratuit : https://gamejolt.com/games/space-war/482884

            18 février 2017 à 1:29:35

            Bonsoir

            ASW_ a écrit:

            Non, *argv ne fournit pas le chemin complet ( en tous cas pas chez moi ), essaye ceci :

            	getcwd(buffer, PATH_MAX + 1);
            

            Tu aurais pu chercher sur Internet tu aurais eu la réponse.

            Il a demandé l'emplacement de son programme, pas le répertoire de travail.

            • Partager sur Facebook
            • Partager sur Twitter
              18 février 2017 à 2:51:21

              Bonjour,

              a priori argv[0] peut contenir un peu tout et n'importe quoi ... par exemple il peut ne rien contenir (lancement avec un exec*). La seule chose que la norme impose est qu'au pire argv[0] n'est pas NULL et (toujours au pire) argv[0]=0.

              Normalement les OS proposent un moyen de retrouver l'exécutable (via /proc/sel/exe sous linux). Windows doit également proposer quelque chose de plus fiable.

              • Partager sur Facebook
              • Partager sur Twitter
              First solve the problem. Then, write the code. ~ John Johnson
                18 février 2017 à 6:13:43

                #include <windows.h>
                #include <stdio.h>
                
                int main(void)
                {
                  char szFullPath[MAX_PATH];
                
                  GetModuleFileName(0, szFullPath, sizeof szFullPath);
                  puts(szFullPath);
                  return 0;
                }
                • Partager sur Facebook
                • Partager sur Twitter

                Fonction qui donne l'emplacement de nôtre program?

                × 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