execution de programme

execution de programme - C - Programmation

Marsh Posté le 22-02-2006 à 15:58:20    

Salut,
 
Je cherche a faire une programme en C qui fait des copie de fichier j'utilise les commande suivante:

Code :
  1. system("copy  /y  jeu\\pics\\7\\track10_visible_01.jpg  jeu\\pics\\track1" );
  2. system("copy  /y  jeu\\pics\\7\\track11_01.gif  jeu\\pics\\track1" );
  3. system("copy  /y  jeu\\pics\\7\\track12_01.gif  jeu\\pics\\track1" );


Le problème c'est qu'à chaque commande il m'ouvre (pendant une fraction de seconde) une fenetre DOS (mais c'est quand même casse pied), je voulait savoir s'il y avait moyen de ne pas les voir ?
 
Autre question: je voudrais ouvrir une page internet à partir du programme, comment faire ?
 
Merci A++

Reply

Marsh Posté le 22-02-2006 à 15:58:20   

Reply

Marsh Posté le 22-02-2006 à 16:07:22    

pour la fenetre jen ai aucune idée pour la page internet tu peux faire ixplore.exe url ou firefox.exe url ca devrait marcher.

Reply

Marsh Posté le 22-02-2006 à 16:12:10    

ciriak a écrit :

Salut,
 
Je cherche a faire une programme en C qui fait des copie de fichier j'utilise les commande suivante:

Code :
  1. system("copy  /y  jeu\\pics\\7\\track10_visible_01.jpg  jeu\\pics\\track1" );
  2. system("copy  /y  jeu\\pics\\7\\track11_01.gif  jeu\\pics\\track1" );
  3. system("copy  /y  jeu\\pics\\7\\track12_01.gif  jeu\\pics\\track1" );


Le problème c'est qu'à chaque commande il m'ouvre (pendant une fraction de seconde) une fenetre DOS (mais c'est quand même casse pied), je voulait savoir s'il y avait moyen de ne pas les voir ?
 
Autre question: je voudrais ouvrir une page internet à partir du programme, comment faire ?
 
Merci A++


 
Pourquoi ne pas faire une vraie copie en C ?

#include <stdio.h>
int main(int argc, char *argv[])
{
    FILE *in;
    FILE *out;
    int c;
 
    in=fopen(argv[1], "rb" );
    out=fopen(argv[2], "wb" );
 
    while ((c=fgetc(in)) != EOF)
           fputc(c, out);
 
    fclose(in);
    fclose(out);
    return 0;
}


 
Tu appeles ce programme en lui passant en paramètre les noms de tes deux fichiers. Tu peux rajouter des contrôles sur argc pour être certain qu'il y a bien 2 arguments et sur la réussite de chaque "fopen" (c'est d'ailleurs conseillé) mais la structure de base est faite...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 22-02-2006 à 16:15:45    

super, un batch en C

Reply

Marsh Posté le 22-02-2006 à 16:25:12    

Dans mon programme, les adresses sont defini au cours du programme, pas passer en arguments.
Pourrai tu me mettre des commentaire sur le programme pour savoir a quoi correspond chaque fonction stp ?

Reply

Marsh Posté le 22-02-2006 à 16:43:23    

ciriak a écrit :

Dans mon programme, les adresses sont defini au cours du programme, pas passer en arguments.
Pourrai tu me mettre des commentaire sur le programme pour savoir a quoi correspond chaque fonction stp ?


Euh, c'est carrément élémentaire. Si tu ne sais pas lire ce code, commence par apprendre le langage C.
http://mapage.noos.fr/emdel/images/c_warn.png


---------------
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 22-02-2006 à 16:56:37    

Emmanuel Delahaye: Pour apprendre il faut poser des questions, si tu ne veux pas partager ne t'ettone pas que tu n'ai pas de reponse un jour.
 
j'essairai le programme ce soir...
 
Sinon pour ouvrir la page internet, si quelqu'un sais ??

Reply

Marsh Posté le 22-02-2006 à 16:59:47    

ciriak a écrit :

Emmanuel Delahaye: Pour apprendre il faut poser des questions, si tu ne veux pas partager ne t'ettone pas que tu n'ai pas de reponse un jour.


Non, pour apprendre il faut commencer par se documenter et savoir chercher les réponses à des questions simples seul. Si pour un bout de code aussi simple t'es pas capable de chercher dans la doc pour comprendre tout seul comment ça marche, t'es pas près de rpogrammer quoi que ce soit tout seul.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-02-2006 à 17:13:56    

je n'est pas le temps de faire des recherche car le suis au boulot et je n'ai pas internet à mon logement, donc je cherchait la solution qui me permettait d'être le moins possible sur le net (ce que je n'ai en théorie pas le droit de faire).
 
"Merci de votre calaboration" (clin d'oeil "au cinquième élément" )

Reply

Marsh Posté le 22-02-2006 à 17:34:55    

Bof, il faut bien débuter un jour...
 
Pour indiquer que le programme a besoin des fonctions d entrée sortie standart (stdio):
#include <stdio.h>
 
fonction principale:
int main(int argc, char *argv[])
 
déclarer l utilisation de deux fichier et 1 caractère:
    FILE *in;
    FILE *out;
    int c;
 
ouvrir les fichiers in et out
    in=fopen(argv[1], "rb" );
    out=fopen(argv[2], "wb" );
 
lire un caractère, si ce caractère n est pas EndOfFile
    while ((c=fgetc(in)) != EOF)
ecrire le caractère dans fichier out
           fputc(c, out);
 
fermer les fichiers  
    fclose(in);
    fclose(out);
 
fin
    return 0;

Reply

Marsh Posté le 22-02-2006 à 17:34:55   

Reply

Marsh Posté le 22-02-2006 à 17:45:14    

ciriak a écrit :

Emmanuel Delahaye: Pour apprendre il faut poser des questions,


Non. Pour apprendre, il faut ouvrir un livre de C ou un tutoriel et se former.  

Citation :

Sinon pour ouvrir la page internet, si quelqu'un sais ??


On t'a déjà répondu :  


   system ("ixplore.exe url_qui_va_bien" );
   system ("firefox.exe url_qui_va_bien" );


etc. T'arrives à comprendre ou il faut commenter ?

Message cité 1 fois
Message édité par Emmanuel Delahaye le 22-02-2006 à 19:38:00

---------------
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 22-02-2006 à 19:28:14    

il manque le controle de la valeur retour des fopen
 
ciriak > pourquoi faire ca en C ?

Reply

Marsh Posté le 22-02-2006 à 21:10:35    

ciriak a écrit :

Dans mon programme, les adresses sont defini au cours du programme, pas passer en arguments.
Pourrai tu me mettre des commentaire sur le programme pour savoir a quoi correspond chaque fonction stp ?


Désolé, je sais que les commentaires sont importants mais je ne pensais pas que t'en aurais besoin pour lire un code aussi simple. Bon Nargy a donné des commentaires très corrects. Sinon voici les miens...

// Inclusion des définitions des structures aptes à traiter des fichiers
#include <stdio.h>
 
// Programme principal
int main(
    int argc,                          // Nb d'arguments
    char *argv[])                   // Tableau des arguments
{  
    FILE *in;                         // Ptr sur fichier à lire
    FILE *out;                      // Ptr sur fichier à écrire
    int c;                             // Caractère lu/écrit
 
    in=fopen(argv[1], "rb" );     // Ouverture argument n° 1 en lecture
    out=fopen(argv[2], "wb" ); // Ouverture argument n° 2 en écriture
 
    while ((c=fgetc(in)) != EOF) // Tant que je peux lire un caractère du fichier à copier
           fputc(c, out);            // J'écris ce caractère dans le fichier copié
 
    fclose(in);                      // Fermeture fichier à lire
    fclose(out);                    // Fermeture fichier à écrire
   
    return 0;                        // Je quitte le programme en disant '"tout va bien"
}


 

Emmanuel Delahaye a écrit :


   system ("ixplore.exe url_qui_va_bien" );
   system ("firefox.exe url_qui_va_bien" );


etc. T'arrives à comprendre ou il faut commenter ?


Hum... et dire que j'ai failli lui conseiller d'ouvrir une socket...
On en restera là je crois  :D


Message édité par Sve@r le 22-02-2006 à 21:30:58

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 22-02-2006 à 21:32:35    

Sve@r >  tu dois également controler le retour des fonctions fopen et fputc

Reply

Marsh Posté le 22-02-2006 à 21:39:36    

skelter a écrit :

Sve@r >  tu dois également controler le retour des fonctions fopen et fputc


 
Sve@r  

Citation :

Tu peux rajouter des contrôles sur argc pour être certain qu'il y a bien 2 arguments et sur la réussite de chaque "fopen" (c'est d'ailleurs conseillé)


Message édité par Emmanuel Delahaye le 22-02-2006 à 21:39:58

---------------
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 22-02-2006 à 21:41:00    

skelter a écrit :

Sve@r >  tu dois également controler le retour des fonctions fopen et fputc


Exact (quoique pour "fput" je pense que c'est du luxe). Mais je l'ai dit dans mon tout premier post; je donnais juste la base de la structure du programme en conseillant un contrôle sur "argc" et "fopen". En fait, j'avais pas vraiment le temps de fignoler...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 22-02-2006 à 21:41:47    

ok j'ai rien dis  :sleep:

Reply

Marsh Posté le 22-02-2006 à 21:43:38    

skelter a écrit :

ok j'ai rien dis  :sleep:


Mais si, vaut mieux trop en dire que pas assez  :)  :wahoo:  :hello:  


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 23-02-2006 à 10:01:40    

merci pour les commentaire
 
merci pour la page internet
(faut juste que le iexplore.exe ou firefox.exe soit dans le dossier dans lequel est éxecuter le programme compiler en C)

Reply

Marsh Posté le 23-02-2006 à 10:16:17    

ciriak a écrit :

merci pour les commentaire
 
merci pour la page internet
(faut juste que le iexplore.exe ou firefox.exe soit dans le dossier dans lequel est éxecuter le programme compiler en C)


Pas besoin, sinon mettre le chemin entier (entre doubles quotes car il peut y avoir des caractères bizarres genre espace...)
 
Rappel : en C, une double quote se code \" dans une chaine de caractères...
 

printf ("hello\n" ); /* -> hello */
printf ("\"hello\"\n" ); /* ->"hello" */


Ce qui est rapidement illisible. Je suggère
 

#define DQ "\""
 
printf (DQ "hello" DQ "\n" ); /* ->"hello" */


Message édité par Emmanuel Delahaye le 23-02-2006 à 10:16:57

---------------
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 23-02-2006 à 10:35:02    

Le problème c'est que je veux pouvoir passer le programme a d'autre et s'il n'ont pas le même chemin, ça bug...

Reply

Marsh Posté le 23-02-2006 à 10:38:28    

ciriak a écrit :

Le problème c'est que je veux pouvoir passer le programme a d'autre et s'il n'ont pas le même chemin, ça bug...


Comme je te l'ai dit, essaye déjà sans le chemin. Il est possible que le chemin implicite d'une application aussi importante soit connue du système. Sinon, prévoir un fichier de config, une clé du registre... Programmation d'application classique...
 
 


---------------
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 23-02-2006 à 10:50:42    

Je pensais, a tord, qu'une page enregistrer sur le l'ordi se lanssait comme une page internet en tapant l'adresse de la page à partir du dossier duquel est lancer l'aplication mais bug...
 
Je travail hors connexion, j'ai une page internet enregistrer dans un sous dossier de l'endroit ou est lancer l'apllication et sans passer par la racine de l'arborécence, je ne trouve pas...

Reply

Marsh Posté le 23-02-2006 à 20:55:30    

Salut,
Si sous windows:
Pour la copie:
http://msdn.microsoft.com/library/ [...] pyfile.asp

Code :
  1. #include <windows.h>
  2. ...
  3. CopyFile(Fichier_origine, fichier_destination, FALSE);


 
Pour la page HTML:
http://msdn.microsoft.com/library/ [...] xecute.asp

Code :
  1. #include <shellapi.h>
  2. // import shell32.lib
  3. ...
  4. ShellExecute(handle, "open", <chemin_vers_fichier.html>, NULL, NULL, SW_SHOWNORMAL);


Message édité par breizhbugs le 23-02-2006 à 20:56:20
Reply

Marsh Posté le 24-02-2006 à 11:09:11    

La copie fonctionne très bien, Merci
 
Mais l'execution de ShellExecute bug
il ne veux pas complilé le programme à cause d'erreur trouvé dans shellapi.h
par exemple: 97   C:\Program Files\Dev-Cpp\include\shellapi.h    'DWORD' is used as a type, but  


Message édité par ciriak le 24-02-2006 à 11:14:34
Reply

Marsh Posté le 24-02-2006 à 12:58:05    

Bonjour

Citation :

Je pensais, a tord, qu'une page enregistrer sur le l'ordi se lanssait comme une page internet en tapant l'adresse de la page à partir du dossier duquel est lancer l'aplication mais bug...
 
Je travail hors connexion, j'ai une page internet enregistrer dans un sous dossier de l'endroit ou est lancer l'apllication et sans passer par la racine de l'arborécence, je ne trouve pas...


Citation :

il ne veux pas complilé le programme à cause d'erreur trouvé dans shellapi.h


Avant de compiler un programme il faut le relire.
Avant de poster un message, c'est aussi très bien de se relire.
J'ai toujours été nul en orthographe mais tout de même pas à ce point.

Reply

Marsh Posté le 24-02-2006 à 13:00:04    

ça fonctionne sans le handle et pas besoin de shellapi.h
 
ShellExecute(NULL, "open", "jeu\\moto 3.html", NULL, NULL, SW_SHOWNORMAL);
 
reste plus qu'à le tester sur une autre machine...


Message édité par ciriak le 24-02-2006 à 13:00:39
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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