Gros probleme shellexecute

morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 - 8 juin 2004 à 11:55
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 - 9 juin 2004 à 10:53
bonjour voila j ai un probleme :d

j ai une liste de programme à executer, je met le nom des cdes programmes dans un tableau et les execute comme ceci :

int main(void)
{
int pourcentage,install=0;
char programmes[13][30]={"1.exe","2.exe","3.exe","4.exe","5.exe","6.exe","7.exe","8.exe","9.exe","10.exe","11.exe","12.exe","13.exe"};
while(install<sizeof(programmes)/30)
{
pourcentage=(100/(sizeof(programmes)/30))*install;
cout<
comment faire svp ???
merci de votre aide

www.morgan06.fr.fm

12 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 juin 2004 à 12:05
"open" a specifier pour lancer un exe.
Lis la doc de ShellExecute dans MSDN.

ciao...
BruNews, Admin CS, MVP Visual C++
0
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
8 juin 2004 à 14:29
Merci BruNews ça marche mais maintenant j ai un autre probleme:
en fait je ne veut pas que tout les programmes ne se lancent "en meme temps" ( ce sont des correctifs windows XP)

en fait jeut faire l equivalent de ce .bat :

1.exe -q -z

2.exe -q -z

3 -q -z

...

avec ce bat l installation de correctif se fait sans besoin de confirmation de l utilisateur et les uns aprés les autres.
comment faire la meme chose avec mon code stp ?
merci beaucoup

www.morgan06.fr.fm
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
8 juin 2004 à 14:58
si c'est tout ce que tu veux faire, ca ne sert à rien de faire un exe, un bat suffit
sinon je pense que tu devrais utiliser CreateProcess au lieu de ShellExecute
0
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
8 juin 2004 à 15:00
utilises CreateProcess
et WaitForSingleObject sur le HANDLE du processus créé pour attendre qu'il se termine

-------------------------------------
BlackGoddess
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
8 juin 2004 à 16:23
ce n est pas que c que je veu faire , je fait une petite presentation "graphique"

ok pour le singleobject mais comment passer l argument -q et -z ?

ils permettent de faire l installation des correctifs sans intervention de l utilisateur et sans rebooter à la fin de l install

Merci
www.morgan06.fr.fm
0
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
8 juin 2004 à 16:35
ça serait possible de me donner un exemple de code avec cretaprocess et WaitForSingleObject svp ?
j ai cherché sur la msdn mais ça me fait planter mon programme :(

merci bcp
www.morgan06.fr.fm
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
8 juin 2004 à 16:43
la ligne de commande (-q et -z) se précise dans le 4ieme parametre de shellexecute. Sinon pour attendre la fin d'un process avec ShellExecute, il faut utiliser ShellExecuteEx (j'ai vu passer une source recement dessus)
0
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
8 juin 2004 à 17:31
hilairenicolas ->
si je fait
CreateProcess(0,programmes[install],0, "-q-z", 0,CREATE_SUSPENDED, 0, 0, &si, &pi);

ça ne marche pas ça me dit que c un mauvais argument :(
www.morgan06.fr.fm
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
8 juin 2004 à 18:04
on est bien daccord que -q et -z sont des options qui sont reservées à un certain type de programme (notamment les correctifs de microsoft), si tu cherches à lancer un autre programme de cette facon, il faut qu'il gere aussi ce genre de paramètres

si ce que tu veux faire c'est attendre la fin d'execution d'un programme pour en lancer un autre, tu peux utiliser CreateProcess (mais pas besoin de ligne de commande) ou bien ShellExecuteEx
0
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
8 juin 2004 à 20:04
mon programme est un lanceur de correctif de windows ( je bosse dans un magasin d info et on installe des correctfis sur les pc neufs)
donc l option -q et -z est adaptée
mais ça marche pas je n y arrive pas on pourrait me donner un petit bout de code svp ?

www.morgan06.fr.fm
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
9 juin 2004 à 09:47
salut

SHELLEXECUTEINFO execinfo;
memset(&execinfo, 0, sizeof(execinfo));

execinfo.lpFile = programmes[install];
execinfo.cbSize = sizeof(execinfo);
execinfo.lpVerb = "open";
execinfo.fMask = SEE_MASK_NOCLOSEPROCESS;
execinfo.nShow = SW_SHOWDEFAULT;
execinfo.lpParameters = "-q -z";
    
ShellExecuteEx(&execinfo);
WaitForSingleObject(execinfo.hProcess, INFINITE);


ou un truc du genre ...
0
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
9 juin 2004 à 10:53
merci ça a l air de marcher ;)
merci tout le monde
et vive codes-sources :)
www.morgan06.fr.fm
0