c/c++ et les processus

c/c++ et les processus - Programmation

Marsh Posté le 04-12-2001 à 17:04:12    

je code actuellement un gestionnaire d'application et je voudrais que toute les applications qui sont lancées tournent en meme temp (Et non que une se termine,et q'une 2eme se lance etc...)
quelle difference fondamentale y a t-il entre:

  • system(...)
  • CreateProcess(..)
  • _spawn(..)

Sachant que toutes les 3 servent à creer un nouveau processus?
 
Avec system(..), il faut attendre la fin d'une appli pour q'une deuxieme se lance et c'est justement ce que je ne veux pas!!
 
Please help :??:

Reply

Marsh Posté le 04-12-2001 à 17:04:12   

Reply

Marsh Posté le 04-12-2001 à 17:19:07    

Faut utiliser CreateProcess
 
Genre :

Code :
  1. if( !CreateProcess( EXEPATH, NULL, NULL, NULL, TRUE, IDLE_PRIORITY_CLASS, NULL, EXEDIR, &StartupInfo, &pi ) )
  2. {
  3. char msg[100];
  4. // traitement erreur
  5. }


 
Après si tu veux vraiment attendre la fin du process fils, tu
fait un :

Code :
  1. WaitForSingleObject( pi.hProcess, INFINITE );

 

[edtdd]--Message édité par Ttienne--[/edtdd]

Reply

Marsh Posté le 04-12-2001 à 17:27:23    

Ok je fais les essais et je te tiens au courant
Merci te ton aide

Reply

Marsh Posté le 04-12-2001 à 18:07:42    

Du grand art,c'est du tout bon...Merci beaucoup :love:

Reply

Marsh Posté le 04-12-2001 à 18:10:38    

Je t'en prie ! :jap:
 
Tu n'aurais pas un idée pour mon problème de multisélection de fichiers et repertoires ( topic [VC6.0].... from Ttienne) ?
 
:jap:

Reply

Marsh Posté le 04-12-2001 à 21:39:03    

A ma connaissance tu n'a guere le choix,une telle boite n'existe pas en 'préfabriqué'.Par contre à l'aide des MFC sa réalisation n'est pas trés compliqué:
 
pour l'arbre classe CTreeCtrl (Tree Ctrl
pour la liste CListCtrl (List Ctrl)(clic droit option view->report)ou ListBox si tu ne veux qu'une seul colonne
 
ci join un code d'exemple que tu utilisera pour initialisé ta boite (Ds la fonction OnInitDialog avec AppWizard)
 
 
m_liste.InsertColumn(0,"Appareil",LVCFMT_LEFT,70
);
m_liste.InsertColumn(1,"Opt1",LVCFMT_LEFT,50);
m_liste.InsertColumn(2,"Opt2",LVCFMT_LEFT,50);
m_liste.InsertColumn(3,"Date",LVCFMT_RIGHT,80);
 
 
 
 
 
 hTree=m_tree.InsertItem("K1TP",0,1);    
 hTree=m_tree.InsertItem("T",0,1,hTree);
 m_tree.InsertItem("10",0,1,hTree);
 m_tree.InsertItem("100",0,1,hTree);
m_tree.Expand(hTree,TVE_EXPAND);
 hTree=m_tree.GetParentItem(hTree);
 hTree=m_tree.InsertItem("P",hTree);
 m_tree.InsertItem("1",0,1,hTree);
 m_tree.InsertItem("10",0,1,hTree);
m_tree.Expand(hTree,TVE_EXPAND);
 hTree=m_tree.InsertItem("K2TP",0,1);        //K2TP
 hTree=m_tree.InsertItem("T",0,1,hTree);
m_tree.Expand(hTree,TVE_EXPAND);
 m_tree.InsertItem("1",0,1,hTree);
 m_tree.InsertItem("10",0,1,hTree);
 m_tree.InsertItem("100",0,1,hTree);
m_tree.Expand(hTree,TVE_EXPAND);
m_tree.Expand(m_tree.GetRootItem(),TVE_EXPAND);
 
 
Voilà avec ça tu as déjà un bel arbre et une liste comportant 4 colonnes
 
 
 
Quand tu cliqueras sur l'arbre cela appellera la fonction OnSelChangeTree (c'est un message dans AppWizard)
 
voilà à quoi ça resemble:
void mesure::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult)  
{
 NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
 // TODO: Add your control notification handler code here
 POSITION pos;
  CString s;
 CStringList stringList1;
 int j=0,i=0;
 COleDateTime temp1,temp2;
 
 
 
 hTree=m_tree.GetSelectedItem();
 j=m_liste.InsertItem(m_liste.GetItemCount(),"" );
 
 do
 {  
  s=m_tree.GetItemText(hTree);    
  stringList1.AddHead(s);
  hTree=m_tree.GetParentItem(hTree);
 }
 while(hTree!=0);
   
 pos=stringList1.GetHeadPosition();    //pos initialis n tete de liste
 while(pos){          //tant que pos!=0 : fin de liste
   s=stringList1.GetNext(pos);
   m_liste.SetItemText(j,i++,s);
   }
 
 m_time.GetTime(temp1);
 m_dat.GetTime(temp2);      s=temp2.Format("%d/%m " )  +  temp1.Format("- %Hh%M" );  
 m_liste.SetItemText(j,3,s);
 
 stringList.RemoveAll();    
for(int l=3;l>=0;l--){
 if((m_liste.GetItemText(m_liste.GetItemCount()-1,
l))!="" )  
stringList.AddHead(m_liste.GetItemText(m_liste.Get
ItemCount()-1,l));
 }
 
 *pResult = 0;
}
 
 
Ainsi quand tu cliquera sur sur un élément de l'arbre cela ajoutera le nom de l'élément cliquer dans une stringlist sorte de vector mais défini dans les MFC,tu pourra de cette manière en parcourant cette stringlist ajouter les éléments sélectionnés dans ta Liste Ctrl (ou si tu n'a pas besoin de plusieurs colonnes dans une ListBox(méthode AddString("ta chaine" );) ou pour la ListeCtrl InsertItem(...)
 
C'est un peu donné en vrac mais....faudra faire avec  ;)  
Non je plaisante, si t'as le moindre pbm n'hésite pas...
@+

Reply

Sujets relatifs:

Leave a Replay

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