CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Programmation] Batch ==> C++

[Draks]
[Draks]
Niveau 5
29 mai 2006 à 11:38:42

Bonjours !
J´ai un petit problème et c´est pk je viens ici vous demander de l´aide ;- )

Je fais du C++ et dans un de mes programme je dois appeler un compresseur. J´ai mit l´exe et le DLL dans le dossier ou se situe mon programme en C mais le probleme c´est que je ne sais pas comment appeler l´exe ( enfin le compresseur )

J´utilise CreateProcess ( qui marche avec autre chose , comme Windows Media Player ... ) mis avec le compresseur je ne sais pas comment faire :(

J´ai la commande en batch qui permet de l´appeler ==>
lha32.exe a /d "[Path]\[nom-du-fichier-LZH]" "[path]\[nom-du-fichier-à-compresser]"

Quelqu´un pourrait-il me la "traduire" en C++ svp car la je suis vraiment perdu :p

Merci à tous d´avance ;- )

guyver2
guyver2
Niveau 10
29 mai 2006 à 13:23:44

si c´est sous windows, peut-etre que tu peux utiliser la fonction system.
de cette manière:

...
system("ici ta comande batch");
...

dnob700
dnob700
Niveau 10
29 mai 2006 à 15:44:54

un truc dans ce gout là devrait aller :
CreateProcess(NULL,"lha32.exe a /d [nom-du-fichier-LZH]
[nom-du-fichier-à-compresser]",NULL,NULL,0,NULL,NU
LL,NULL,NULL);

mais les noms de fichiers ne peuvent as contenir d´espace (sinon il faut des guillemets dans la chaines).

Si ça plante, regarde dans la MSDN quels sont les derniers paramètres (il y a deux adresse de structure à passer en paramètre, mais je pense que c´est acultatif, je n´en suis pas sûr) et complète les.

L´important est de mettre la commande à exécuter dans le deuxième paramètre et non pas dans le premier.

[Draks]
[Draks]
Niveau 5
29 mai 2006 à 16:11:11

Okey Merci bien a vous 2 pour vos reponses ;- )

dnob700 ton ecriture marche merci en fait je mettais ,ce que tu as mis en 2nd parametre, en 1er et ca marchais pas :p

Voila l´ecriture qui marche ==>

if(CreateProcess(NULL,"lha32.exe a /d C:\\Compression.lzh C:\\Compression.doc", 0, 0, FALSE, 0, NULL, NULL, &siStartupInfo, &piProcessInfo) == FALSE)
{
cout<<"... Erreur ..."<<endl;
}
else
{
cout<<"... Attente ..."<<endl;

WaitForSingleObject iProcessInfo.hProcess, INFINITE);

CloseHandle(piProcessInfo.hThread);
CloseHandle(piProcessInfo.hProcess);
}

Merci bien j´vais enfin pouvoir avancer sur la suite ;- )

dnob700
dnob700
Niveau 10
29 mai 2006 à 18:49:00

oui, en fait le premier paramètre c´est le nom du programme et le second c´est la ligne de commande complète, celle recu par le programme dans argv.

Alors bien sûr tu peut mettre juste le nom du programme dans le premier paramètre et la ligne de commande dans le deuxième, mais alors le argv[0] dont on s´attend à ce qu´il contienne le nom du programme contiendra le premier argument du programme appelé (et un programme pas très bien écrit, pourrait ne pas lire cet argument). Il faut donc répéter le nom du programme dans le deuxième paramètre pour éviter toutes mauvaise surprise. Mais alors, tu as le droit de ne pas le mettre dans le premier paramètre.

godrik
godrik
Niveau 30
03 juin 2006 à 16:24:06

heu, un programme pas tres bien ecrit pourrait nlouper un argument tu dis.

poutant il me semble que le C normalise que argv[0] doit etre le nom du programme ( ou j´ai fumé ?)

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment