Partage
  • Partager sur Facebook
  • Partager sur Twitter

mon programme se crache

ouvrir plusieurs fenêtres chrome à certaines urls

Sujet résolu
    12 juin 2024 à 13:49:54

    Bonjours, j'aimerais faire un programme qui ouvre des urls dans chrome mais il n'ouvres qu'un onglet et se crache :colere2:

    Voici mon code :

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    void chromeexe(char *);
    int main() {
      char *links[] = {"google.com","youtu.be","discord.com","youtu.be/dQw4w9WgXcQ","minecraft.net"}
      for(int i=0;i<5;i++) {
        chromeexe(links[i]);
      }
      return(0);
    }
    void chromeexe(char *page) {
      char *chrome = "\"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" ";
      char buffer[80];
      strcpy(buffer,chrome);
      strcat(buffer,page);
      system(buffer);
    }
    • Partager sur Facebook
    • Partager sur Twitter
      12 juin 2024 à 14:40:13

      J'ai testé ton code, les commandes system n'aime pas bien les espaces dans les nom de fichiers ou de dossier

      Ça fonctionne en rajoutant un niveau supplémentaire de guillemets  (testé sous Win 7) ex :

      char *chrome = "\"\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"\" ";
      Personnellement, sous Windows, j'aurais plutôt utilisé ShellExecute.
      • Partager sur Facebook
      • Partager sur Twitter
      ...
        12 juin 2024 à 14:41:52

        Bonjour (sans s)

        Tu veux dire se crashe ?

        Est-ce que 80 caractères sont assez pour contenir le contenu de chrome + le contenu de page ?

        • Partager sur Facebook
        • Partager sur Twitter
          12 juin 2024 à 15:51:04

          J'ai réessayé avec un buffer de 200 caractère et ça fonctionne sans problème, merci
          • Partager sur Facebook
          • Partager sur Twitter
            12 juin 2024 à 16:38:11

            Hello,

            Je crains que le problème ne soit pas résolu en faisant passer le buffer à 200 octets. J'ai fait ce petit test

            #include <stdio.h>
            #include <string.h>
            
            int main(void) {
            	char *links[] = {"google.com","youtu.be","discord.com","youtu.be/dQw4w9WgXcQ","minecraft.net"};
            	char *chrome = "\"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" ";
            	for(int i=0; i<5; i++)
            		printf("cmd=%s, totlen=%llu\n", links[i], strlen(chrome)+strlen(links[i]));
            	
            	return(0);
            }

            et toutes les longueurs sont < 80. Le programme fonctionne donc par hasard.

            Peut-être @rouloude a-t-il raison ? :-°

            De plus, quand on ne sait pas à quoi s'attendre au niveau des longueurs de chaines de caractères, on fait de l'allocation dynamique.

            Edit: orthographe

            -
            Edité par edgarjacobs 12 juin 2024 à 17:05:15

            • Partager sur Facebook
            • Partager sur Twitter

            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

              16 juin 2024 à 20:33:30

              Remarquez que dans les chemins d'accès sous windows, vous pouvez parfaitement  (*) utiliser / à la place de \, ce qui évite d'avoir à les doubler dans les chaînes littérales en C.

              Bref, "C:/Program Files/Google/Chrome/etc"

              (*) et ceci depuis le bon vieux temps de ms-dos je sais plus combien. Pour la petite histoire, Bill Gates envisageait serieusement à l'époque de faire passer ses clients sous unix (xenix) dont il avait acquis certains droits, qu'il trouvait trés bien, pour se débarrasser de ms-dos bricolé à partir de qdos plutôt inspiré de cp/m. Et puis il s'est rendu compte que c'était trop tard, et que la plupart des clients ne suivraient pas. Donc on garde msdos et en avant pour coller windows au dessus .

              -
              Edité par michelbillaud 16 juin 2024 à 20:38:44

              • Partager sur Facebook
              • Partager sur Twitter

              mon programme se crache

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown