Exécuter un programme externe avec des parameters spécifiques à partir du code Windows c / c ++

Je souhaite appeler Program1 à partir de Program2 avec exactement les mêmes parameters que ceux avec lesquels j’ai appelé Program2. Sous Linux, je peux le faire comme ceci:

int main(char argc, char* argv[]){ execv("./Program1", argv); } 

Dans Windows, j’ai essayé CreateProcess

mais comme le premier message le dit, il existe un problème potentiel: “argv [0] ne contient pas le nom du module comme prévu”. Je veux envoyer l’argv approprié [0] à Program1. Que devrais-je faire?

argv [0] est le nom du programme lui-même.

Tu devrais faire :

 int main(char argc, char **argv) { char* argvForProgram1[] = { "./Program1", 0 } execv(argvForProgram1[0], argvForProgram1); } 

ou pour garder vos arguments précédents:

 int main(char argc, char **argv) { char** argvForProgram1 = argv; argvForProgram1[0] = "./Program1"; execv(argvForProgram1[0], argvForProgram1); } 

Utiliser execve est également préférable, car vous conservez l’environnement:

 int main(char argc, char **argv, char **envp) { char** argvForProgram1 = argv; argvForProgram1[0] = "./Program1"; execve(argvForProgram1[0], argvForProgram1, envp); }