Lancer une application externe en C

Lancer une application externe en C - C - Programmation

Marsh Posté le 18-02-2005 à 17:20:05    

Bonjour a tous,  
Je suis etudiant et pour mon projet de fin d'études, j'ai décidé de realiser une télécommande bluetooth avec un pocket pc.  
 
Pour ce faire je suis dans l'obligation de programmer en C un programme sur mon PC permettant de lancer des applications externes( telles que windows media player ou winamp) ou d'ouvrir des fichiers avec le logciel qui correspond.  
Si quelqu'un a des conseils a donner je suis tres prenneur!!  
J'ai pu voir qu'avec le win32api ca pouvait etre possible mais je ne vois pas trop comment faire et quelle fonction utilisée.  
 
Par avance Merci!!!

Reply

Marsh Posté le 18-02-2005 à 17:20:05   

Reply

Marsh Posté le 18-02-2005 à 19:29:16    

Koon5 a écrit :

Pour ce faire je suis dans l'obligation de programmer en C un programme sur mon PC permettant de lancer des applications externes


La fonction standard est system() (<stdlib.h> ).


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-02-2005 à 09:53:11    

Ok merci beaucoup je viens de trouver cette fonction, cependant quel est le parametre d'entrée? car dans sa definition, il prend un const char*... Est ce l'indentifiant de l'application?(si oui ou le trouver?)
 
CRTIMP int    __cdecl system(const char *);

Reply

Marsh Posté le 19-02-2005 à 10:16:54    

Koon5 a écrit :

Ok merci beaucoup je viens de trouver cette fonction, cependant quel est le parametre d'entrée? car dans sa definition, il prend un const char*... Est ce l'indentifiant de l'application?(si oui ou le trouver?)
 
CRTIMP int    __cdecl system(const char *);


L'adresse d'une chaine représentant la commande... Au fait, qu'en pense ton livre de C ? man system ?
 
Voici ce que dit l'aide de Borland C (évidemment, les explications sont orientées DOS, car la fonction est standard, mais son effet n'est pas portable, bien sûr...) :


  ________
  ¦systemÌ               <PROCESS.H, STDLIB.H>
  ________
  Lance une commande du DOS.
 
  Déclaration:  int system(const char *command);
 
  Description:
 system invoque l'interpréteur de commandes du DOS (COMMAND.COM) afin
 d'exécuter la commande donnée dans la chaîne command, comme si elle avait
 été saisie au niveau de l'invite du DOS.
 
 Le programme à exécuter doit être placé dans le répertoire courant ou dans
 un de ceux cités dans la variable d'environnement PATH du DOS.
 
 La variable d'environnement COMSPEC est consultée pour retrouver le fichier
 COMMAND.COM, qui ne doit donc pas nécessairement figurer dans le répertoire
 actif ("courant" ).
 
  Valeur renvoyée:
   _ Si succès, renvoie 0
   _ Si erreur, renvoie -1 et force errno à
     ENOENT, ENOMEM, E2BIG ou ENOEXEC.
 
  Portabilité:
  + DOS Ð UNIX Ð ANSI C Ð C++ Seul +
  ¦ Oui ¦  Oui ¦   Oui  ¦          ¦
  +-----¤------¤--------¤----------+
 
  Voir Aussi:
   _fpreset     exec...      searchpath   spawn...
 
  Exemple:
 
  #include <stdlib.h>
  #include <stdio.h>
 
  int main(void)
  {
     printf("About to spawn command interpreter and run a DOS command\n" );
     system("dir" );
     return 0;
  }


Message édité par Emmanuel Delahaye le 19-02-2005 à 11:18:17

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-02-2005 à 10:45:55    

En fait je ne souhaite pas utiliser le dos car j'aimerais lancer des fichiers mp3. On m'a parlé de win32api...

Reply

Marsh Posté le 19-02-2005 à 11:17:05    

Koon5 a écrit :

En fait je ne souhaite pas utiliser le dos


Peut importe. system() invoque l'interpréteur de commande courant de ton système (sous XP, cmd.exe, par exemple)

Citation :

car j'aimerais lancer des fichiers mp3. On m'a parlé de win32api...


Un fichier mp3 n'est pas exécutable. Il peut servir de paramètre à un exécutable qui va lire ce fichier (Winamp etc.)
 
Par exemple  

  system ("winamp jimihendrix.mp3" );


 
Tu peux aussi utiliser une fonction de l'API Windows,  
 
http://msdn.microsoft.com
 
mais ton code ne sera plus portable. En principe, on ne fait ça qu'une fois que les solutions portables ont été épuisées...

Message cité 1 fois
Message édité par Emmanuel Delahaye le 19-02-2005 à 11:18:45

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-02-2005 à 11:29:18    

Ok tres bien! c'est sympa!! Je vais tester ca!
Merci!
Autre chose, je souhaite donc faire une telecommande et je souhaitais génerer une sorte de catalogue dans un fichier txt que j'enverrai vers le pocket pc qui traitera les donnees.
La question est:comment peut on en C dresser une liste de fichiers d'un repertoire et l'importer dans un fichier txt?(je connais f_open,f_write,f_close)

Reply

Marsh Posté le 19-02-2005 à 11:43:45    

Koon5 a écrit :

comment peut on en C dresser une liste de fichiers d'un repertoire


Pour récupérer la liste des fichier d'un répertoire, il faut utiliser une fonction système. Puisque tu es sous Windows, le mieux est de consulter la liste des fonctions dans MSDN (lien déjà donné).

Citation :

et l'importer dans un fichier txt?(je connais f_open,f_write,f_close)


Non! Tu connais fopen(), fwrite() ,fclose() ... !
 
Pour créer un ficher texte, tu utilises fopen() avec "w", fprintf(), fclose(). Cette question est très basique AMA, tu devrais commencer par apprendre le langage C avant de te lancer dans des choses plus compliquées...
 
Quelques conseils utiles:
 
http://mapage.noos.fr/emdel/
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-02-2005 à 12:12:37    

Ok Ok simplement les reflexions je pense que tu peux les garder, si je post c'est pour avoir de l'aide!
Je sais tres bien utiliser les fonctions de creation de fichier txt.
Merci pour ton aide

Reply

Marsh Posté le 19-02-2005 à 12:23:58    

Koon5 a écrit :

Ok Ok simplement les reflexions je pense que tu peux les garder, si je post c'est pour avoir de l'aide!


L'aide consiste aussi à te conseiller ce qu'il faut faire. Si tu ne veux pas d'aide, ne poste pas ici.

Citation :


Je sais tres bien utiliser les fonctions de creation de fichier txt.


Visiblement, non...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-02-2005 à 12:23:58   

Reply

Marsh Posté le 27-12-2006 à 02:26:27    

ok et comment ferait-on pour lancer un programme dont l'utilisateur taperait le nom ?


Message édité par Wolfi- le 27-12-2006 à 02:26:42
Reply

Marsh Posté le 27-12-2006 à 02:31:52    

printf("Appuyez sur les touches Win+R puis tappez le nom d'un programme puis enfin appuyez sur la touche Entrée\n" );
[:petrus75]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 27-12-2006 à 02:52:50    

mdr nan j'ai trouvé avec system(chaine) ca marche

Reply

Marsh Posté le 27-12-2006 à 05:03:29    

Koon5 a écrit :

Ok Ok simplement les reflexions je pense que tu peux les garder, si je post c'est pour avoir de l'aide!


 
Cte réponse... surtout destinée a ED :( :spamafote:

Reply

Marsh Posté le 27-12-2006 à 21:15:03    

Emmanuel Delahaye a écrit :

Peut importe. system() invoque l'interpréteur de commande courant de ton système (sous XP, cmd.exe, par exemple)

Citation :

car j'aimerais lancer des fichiers mp3. On m'a parlé de win32api...


Un fichier mp3 n'est pas exécutable. Il peut servir de paramètre à un exécutable qui va lire ce fichier (Winamp etc.)
 
Par exemple  

  system ("winamp jimihendrix.mp3" );


 
Tu peux aussi utiliser une fonction de l'API Windows,  
http://msdn.microsoft.com
 
mais ton code ne sera plus portable. En principe, on ne fait ça qu'une fois que les solutions portables ont été épuisées...


 
Si la commande "system" est censée être portable, 'system ("winamp jimihendrix.mp3" );' ne l'est pas du tout car rien n'indique que l'utilisateur utilise winamp pour lire ses mp3!!!
 
Si effectivement tu (koon5) programmes pour une plateforme windows uniquement alors renseigne toi sur la fonction 'ShellExecute' (tu trouvera le descriptif sur msdn, voir adresse ci dessus).

Message cité 1 fois
Message édité par breizhbugs le 27-12-2006 à 21:15:52
Reply

Marsh Posté le 27-12-2006 à 23:39:23    

breizhbugs a écrit :

Si la commande "system" est censée être portable, 'system ("winamp jimihendrix.mp3" );' ne l'est pas du tout car rien n'indique que l'utilisateur utilise winamp pour lire ses mp3!!!


 
C'est pour ça qu'il y a écrit "par exemple"...  :sleep:


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed