Prog C++ console qui ouvre un autre programme
kessay
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
.N Messages postés 25 Date d'inscription Statut Membre Dernière intervention -
.N Messages postés 25 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite creer une console application avec Dev-c++ donc en c++ qui :
-Ouvrirait un autre programme à l'ouverture de cette console, ex : VLC
-Paramètrerait ce programme, toujours pour l'exemple de VLC, lui ferait ouvrir un flux réseau à tel adresse ... ou mettre les sous titres de tel endroit ..
Entre autre, je ne connais pas la commande pour lancer un programme, et encore moins les commandes de paramétrage.
Merci d'avance, bien à vous, K.
Je souhaite creer une console application avec Dev-c++ donc en c++ qui :
-Ouvrirait un autre programme à l'ouverture de cette console, ex : VLC
-Paramètrerait ce programme, toujours pour l'exemple de VLC, lui ferait ouvrir un flux réseau à tel adresse ... ou mettre les sous titres de tel endroit ..
Entre autre, je ne connais pas la commande pour lancer un programme, et encore moins les commandes de paramétrage.
Merci d'avance, bien à vous, K.
A voir également:
- Prog C++ console qui ouvre un autre programme
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Programme demarrage windows - Guide
- Test console steam deck - Guide
1 réponse
Si tu veux ouvrir un programme, sous Windows, en C/C++, tu peux très simplement utiliser :
comme cela :
Mais une méthode plus portable et plus propre serait d'utiliser :
comme par exemple :
Si tu as des problème avec la commande MS-DOS «start», tu peux toujours compiler le code ci-haut, et utiliser l'exécutable pour créer un nouveau processus de cette facon :
En prenant bien soin d'encadrer la liste d'arguments (celle destinée à disons VLC dans ce cas ci) de guillemets.
Si tu souhaites mettre des guillemets dans la liste d'arguments destinée au prog, tu peux utiliser ça :
en remplaçant les guillemets (attention il faut continuer d'utiliser de vrais guillemets pour encadrer le deuxième argument de l'exécutable) par «\q».
Bref, le «.exe» résultant de la compilation de ce dernier bout de code a pour deuxième argument ... une liste d'arguments.
Donc pour utiliser, disons avec comme nom de projet «procopen»
en console :
procopen.exe "C:\Program Files (x86)\ProgPath\prog.exe" "argument1 \qargument 2 avec des espaces, qui doit être encadré de guillemet\q argument3"
Voilà.
int system ( const char * command );
comme cela :
system ("start <nom_ou_path_du_programme> <arguments...>");
Mais une méthode plus portable et plus propre serait d'utiliser :
int _spawnlp( int mode, const char *cmdname, const char *arg0, const char *arg1, ... const char *argn, NULL );
comme par exemple :
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <process.h> int main(int argc, char *argv[]) { if (argc < 2 || argc > 3) { printf("Error : wrong parameters count.\n"); return -1; } char *arg1 = (char*) malloc(sizeof(char) * (strlen(argv[1]) + 3)); strcpy(arg1, "\""); strcat(arg1, argv[1]); strcat(arg1, "\""); if (argc > 2) _spawnlp( _P_NOWAIT, argv[1], arg1, argv[2], NULL); else _spawnlp( _P_NOWAIT, argv[1], arg1, NULL); return 0; }
Si tu as des problème avec la commande MS-DOS «start», tu peux toujours compiler le code ci-haut, et utiliser l'exécutable pour créer un nouveau processus de cette facon :
system ("nom_de_l_exe <nom_ou_path_du_programme> <arguments...>");
En prenant bien soin d'encadrer la liste d'arguments (celle destinée à disons VLC dans ce cas ci) de guillemets.
Si tu souhaites mettre des guillemets dans la liste d'arguments destinée au prog, tu peux utiliser ça :
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <process.h> char *getSlashStr(const char* str, const char* slashChar); int main(int argc, char *argv[]) { if (argc < 2 || argc > 3) { printf("Error : wrong parameters count.\n"); return -1; } char *arg1 = (char*) malloc(sizeof(char) * (strlen(argv[1]) + 3)); strcpy(arg1, "\""); strcat(arg1, argv[1]); strcat(arg1, "\""); if (argc > 2) { char slashChar[256] = {0}; slashChar['q'] = '"'; slashChar['\\'] = '\\'; char *arg2 = getSlashStr(argv[2], slashChar); _spawnlp( _P_NOWAIT, argv[1], arg1, arg2, NULL); } else _spawnlp( _P_NOWAIT, argv[1], arg1, NULL); return 0; } char *getSlashStr(const char* str, const char* slashChar) { int strSz=1; for (int i=0; str[i]!='\0'; i++) if (str[i] != '\\') strSz++; else if (slashChar[(int)str[i+1]]) strSz++; char* returnValue = (char*) malloc(sizeof(char) * strSz); if (!returnValue) return NULL; int i; for (i=0, strSz=0; str[i]!='\0'; i++) { if (str[i] != '\\') { returnValue[strSz] = str[i]; strSz++; } else { i++; if ((returnValue[strSz] = slashChar[(int)str[i]])) strSz++; } } returnValue[strSz] = '\0'; return returnValue; }
en remplaçant les guillemets (attention il faut continuer d'utiliser de vrais guillemets pour encadrer le deuxième argument de l'exécutable) par «\q».
Bref, le «.exe» résultant de la compilation de ce dernier bout de code a pour deuxième argument ... une liste d'arguments.
Donc pour utiliser, disons avec comme nom de projet «procopen»
en console :
procopen.exe "C:\Program Files (x86)\ProgPath\prog.exe" "argument1 \qargument 2 avec des espaces, qui doit être encadré de guillemet\q argument3"
Voilà.