Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème chemin relatif

Sujet résolu
    20 avril 2019 à 0:45:37

    Bonsoir,

    j'essaye de modifier mon fond d'écran avec un programme en C, pour l'instant j'ai écris ça :

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main(int argc, char const *argv[])
    {
    	SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "img\\wallpaper.png", SPIF_SENDCHANGE);
    	return 0;
    }

    Avec un chemin absolu ça fonctionne nickel, mais avec un chemin relatif ça ne fonctionne pas et j'ai essayé plusieurs façon de faire.

    Auriez-vous une solution ? PS : je suis sous Windows 10

    Merci d'avance pour votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2019 à 10:14:13

      Il faut récupérer le chemin du répertoire d'exécution de ton programme, ensuite construire le chemin relatif à partir de cet espace de travail. 

      • Partager sur Facebook
      • Partager sur Twitter

      Le crayon la gomme et le papier sont les meilleurs outils du programmeur !

        20 avril 2019 à 11:08:35

        J'ai fais mes petites recherches sur internet mais impossible de trouver une solution même avec ce que tu me dis, aurais-tu un bout de code ?
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2019 à 13:44:04

          Bonjour,

          Pour ce qui est du chemin relatif, tout dépend de là où vous exécutez votre application.

          Par ailleurs, après quelques recherches, si vous souhaitez utiliser un chemin absolu suivi d'un chemin relatif, il est possible d'utiliser la fonction GetModuleFileName() : https://docs.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulefilenamea#remarks

          Avec un exemple en c : https://developercommunity.visualstudio.com/content/problem/105761/usage-of-getmodulefilename-in-c-project.html

          Cordialement,

          Enzo

          • Partager sur Facebook
          • Partager sur Twitter
            20 avril 2019 à 14:00:00

            Bonjour,

            GetModuleFileName retrouve là où est le programme. Ça peut être différent du répertoire d'exécution, sous Windows on peut récupérer le répertoire courant avec la fonction GetCurrentDirectory.

            • Partager sur Facebook
            • Partager sur Twitter

            En recherche d'emploi.

              20 avril 2019 à 23:49:19

              Merci beaucoup à vous deux, j'ai réussi à obtenir le chemin relatif et à faire ce que je voulais.

              Je passe le sujet en résolu

              Pour ceux qui veulent voilà le code :

              #include <stdio.h>  /* defines FILENAME_MAX */
              //#define WINDOWS  /* uncomment this line to use it for windows.*/
              #ifdef WINDOWS
              #include <direct.h>
              #define GetCurrentDir _getcwd
              #else
              #include <unistd.h>
              #define GetCurrentDir getcwd
              #endif
               
              int main(){
                char buff[FILENAME_MAX];
                GetCurrentDir( buff, FILENAME_MAX );
                printf("Current working dir: %s\n", buff);
                return 1;
              }



              • Partager sur Facebook
              • Partager sur Twitter

              Problème chemin relatif

              × 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