Probleme avec l'instruction system du C++

Probleme avec l'instruction system du C++ - C++ - Programmation

Marsh Posté le 07-07-2003 à 15:13:27    

salut a tous,
voila j'ai un petit problème avec l'instruction system. En effet elle me permet d'executer un fichier .bat mais pas en parallèle de mon programme. Mon programme principal est bloque tan que je n'ai pas arrete l'execution de mon .bat.  
Comment puis je passer outre ce probleme?? Dois je definir une thread?
 
Merci d'avance.

Reply

Marsh Posté le 07-07-2003 à 15:13:27   

Reply

Marsh Posté le 07-07-2003 à 15:19:08    

ShellExecute, ShellExecuteEx, ou CreateProcess


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-07-2003 à 15:29:24    

Code :
  1. system("start monfic.bat" );


:D


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 07-07-2003 à 15:29:29    

Merci, mais sont un poil complexe tes fonctions (10 parametres !!)
 je veux juste lancer un .bat en parallèle.
ShellExecuteEx ne marche pas quand je lui donne le chemin de mon fichier

Reply

Marsh Posté le 07-07-2003 à 15:32:36    

th3r1ddl3r a écrit :

Merci, mais sont un poil complexe tes fonctions (10 parametres !!)
 


 
ShellExecute(0, NULL, "fichier.bat", NULL, NULL, SW_SHOWNORMAL);
 
très complexe en effet :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-07-2003 à 15:35:56    

Merci mille fois,
 
t un amour ;-)

Reply

Marsh Posté le 07-07-2003 à 15:36:59    

maintenant faudrait que je teste si j'ai pas deja un programme prog.exe qui tourne dans mes processus.
tu peux m'aider???

Reply

Marsh Posté le 07-07-2003 à 15:37:18    

antp a écrit :


 
ShellExecute(0, NULL, "fichier.bat", NULL, NULL, SW_SHOWNORMAL);
 
très complexe en effet :D


nan il a raison ca marche pas cette fonction.  
 
 
Si tu trouves comment resoudre ton probleme fais moi signe car j'ai le meme.

Reply

Marsh Posté le 07-07-2003 à 15:38:12    

th3r1ddl3r a écrit :

maintenant faudrait que je teste si j'ai pas deja un programme prog.exe qui tourne dans mes processus.
tu peux m'aider???


ctrl+alt+del  -> task list :whistle:

Reply

Marsh Posté le 07-07-2003 à 15:38:12    

ben si chez moi ca marche sa fonction

Reply

Marsh Posté le 07-07-2003 à 15:38:12   

Reply

Marsh Posté le 07-07-2003 à 15:39:00    

et comment tu recupere ca dans un prog Ctrl+Alt+Suppr????

Reply

Marsh Posté le 07-07-2003 à 15:44:08    

th3r1ddl3r a écrit :

et comment tu recupere ca dans un prog Ctrl+Alt+Suppr????


a partir du prog aucune idee.

Reply

Marsh Posté le 07-07-2003 à 15:46:55    

th3r1ddl3r a écrit :

ben si chez moi ca marche sa fonction


faut inclure quel .h  :??:  pour shellexecute?

Reply

Marsh Posté le 07-07-2003 à 15:47:36    

th3r1ddl3r a écrit :

salut a tous,
voila j'ai un petit problème avec l'instruction system. En effet elle me permet d'executer un fichier .bat mais pas en parallèle de mon programme. Mon programme principal est bloque tan que je n'ai pas arrete l'execution de mon .bat.  
Comment puis je passer outre ce probleme?? Dois je definir une thread?
 
Merci d'avance.


 

Code :
  1. pid_t fils = fork();
  2. if(fils == 0)
  3. {
  4.   //code fils
  5.   system("" );
  6. }
  7. else
  8. {
  9.   //code pere  
  10.   // ...
  11.   //une attente non bloquante
  12.   if(waitpid (fils, WNOHANG|WUNTRACED) == fils)
  13.   {
  14.      //tient! le fils a fini
  15.   }
  16.   else
  17.   {
  18.      //tient! le fils n'a pas encore fini
  19.   }
  20. }

Reply

Marsh Posté le 07-07-2003 à 15:49:25    

polo021 a écrit :


faut inclure quel .h  :??:  pour shellexecute?


 
shellapi.h
 
et fais gaff au majs !!
 
ShellExecute !!!

Reply

Marsh Posté le 07-07-2003 à 15:49:45    

western a écrit :


 

Code :
  1. pid_t fils = fork();
  2. if(fils == 0)
  3. {
  4.   //code fils
  5.   system("" );
  6. }
  7. else
  8. {
  9.   //code pere  
  10.   // ...
  11.   //une attente non bloquante
  12.   if(waitpid (fils, WNOHANG|WUNTRACED) == fils)
  13.   {
  14.      //tient! le fils a fini
  15.   }
  16.   else
  17.   {
  18.      //tient! le fils n'a pas encore fini
  19.   }
  20. }




il est sous nux?

Reply

Marsh Posté le 07-07-2003 à 15:51:10    

th3r1ddl3r a écrit :


 
shellapi.h
 
et fais gaff au majs !!
 
ShellExecute !!!


Citation :

'ShellExecute' : undeclared identifier

[:spamafote]

Reply

Marsh Posté le 07-07-2003 à 15:52:12    

polo021 a écrit :


Citation :

'ShellExecute' : undeclared identifier

[:spamafote]


ben chez moi ca marche. t sur du include??

Reply

Marsh Posté le 07-07-2003 à 15:59:36    

th3r1ddl3r a écrit :


ben chez moi ca marche. t sur du include??


ouais sinon il serait pas passe a la compil [:spamafote]
 
tu pourrais essayer un truc pour moi?
Tu fais la meme chose que le ShellExecute mais avec ShellExecuteEx si tu vuex bien, c'est juste pour voir si ca fonctionne.
 
je te file tout le code

Code :
  1. CString mode = "open";
  2. CString file = "ton fichier.exe";
  3. _SHELLEXECUTEINFO  sei;
  4.    ZeroMemory(&sei, sizeof(sei));
  5.    sei.cbSize = sizeof(sei);
  6.    sei.fMask = NULL;
  7.    sei.hwnd = NULL;
  8.    sei.lpVerb = mode;
  9. sei.lpFile = file;
  10.    sei.lpParameters = NULL;
  11.    sei.lpDirectory = NULL;//dir;
  12.    sei.nShow = SW_SHOWNORMAL;
  13.    sei.hInstApp = NULL;
  14. ShellExecuteEx(&sei);

Reply

Marsh Posté le 07-07-2003 à 16:01:40    

polo021 a écrit :


ouais sinon il serait pas passe a la compil [:spamafote]
 
tu pourrais essayer un truc pour moi?
Tu fais la meme chose que le ShellExecute mais avec ShellExecuteEx si tu vuex bien, c'est juste pour voir si ca fonctionne.
 
je te file tout le code

Code :
  1. CString mode = "open";
  2. CString file = "ton fichier.exe";
  3. _SHELLEXECUTEINFO  sei;
  4.    ZeroMemory(&sei, sizeof(sei));
  5.    sei.cbSize = sizeof(sei);
  6.    sei.fMask = NULL;
  7.    sei.hwnd = NULL;
  8.    sei.lpVerb = mode;
  9. sei.lpFile = file;
  10.    sei.lpParameters = NULL;
  11.    sei.lpDirectory = NULL;//dir;
  12.    sei.nShow = SW_SHOWNORMAL;
  13.    sei.hInstApp = NULL;
  14. ShellExecuteEx(&sei);




 
tu veu que je teste mon code avec shellexecuteex ou bien que je teste le tien??

Reply

Marsh Posté le 07-07-2003 à 16:08:29    

th3r1ddl3r a écrit :


 
tu veu que je teste mon code avec shellexecuteex ou bien que je teste le tien??


T'essaye juste de lancer ton .bat avec l'instruction ShellExecuteEx au lieu de ShellExecute.
Le code c'est juste pour pas que tu passes 10 minutes a trouver ca dans la doc.

Reply

Marsh Posté le 07-07-2003 à 16:12:54    

polo021 a écrit :


T'essaye juste de lancer ton .bat avec l'instruction ShellExecuteEx au lieu de ShellExecute.
Le code c'est juste pour pas que tu passes 10 minutes a trouver ca dans la doc.


 
j'ai ca comme erreur:
 
Linking...
LINK : fatal error LNK1168: cannot open c:\3dsmax4\plugins\max2neb.dle for writing
Error executing link.exe.

Reply

Marsh Posté le 07-07-2003 à 16:14:41    

th3r1ddl3r a écrit :


 
j'ai ca comme erreur:
 
Linking...
LINK : fatal error LNK1168: cannot open c:\3dsmax4\plugins\max2neb.dle for writing
Error executing link.exe.


 
Non c t de ma faute ca compile bien

Reply

Marsh Posté le 07-07-2003 à 16:15:43    

essaye           _SHELLEXECUTEINFOA    sei;
a la place de    _SHELLEXECUTEINFO     sei;

Reply

Marsh Posté le 07-07-2003 à 16:15:59    

et ca lance ton programme ou pas?

Reply

Marsh Posté le 07-07-2003 à 16:17:05    

polo021 a écrit :

et ca lance ton programme ou pas?


 
ouep

Reply

Marsh Posté le 07-07-2003 à 16:17:42    

th3r1ddl3r a écrit :

essaye           _SHELLEXECUTEINFOA    sei;
a la place de    _SHELLEXECUTEINFO     sei;


error C2065: '_SHELLEXECUTEINFOA' : undeclared identifier :heink:  
Ca doit etre a cause de la version de notre environnement de developpement.
Mais ca a fonctionne alors je suppose? :sweat:

Reply

Marsh Posté le 07-07-2003 à 16:18:39    


[:sisicaivrai]
nan mais quelle m.... les pocket pc et win CE[:ruisseau de larmes]


Message édité par polo021 le 07-07-2003 à 16:19:04
Reply

Marsh Posté le 07-07-2003 à 16:18:39    

polo021 a écrit :


error C2065: '_SHELLEXECUTEINFOA' : undeclared identifier :heink:  
Ca doit etre a cause de la version de notre environnement de developpement.
Mais ca a fonctionne alors je suppose? :sweat:  


 
avec _SHELLEXECUTEINFO il compile pas
avec _SHELLEXECUTEINFOA il compile et ca marche

Reply

Marsh Posté le 07-07-2003 à 16:26:04    

th3r1ddl3r a écrit :


 
avec _SHELLEXECUTEINFO il compile pas
avec _SHELLEXECUTEINFOA il compile et ca marche


 
ok merci qd meme

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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