Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1352 connectés 

  FORUM HardWare.fr
  Programmation

  c/c++ et les processus

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

c/c++ et les processus

n°78185
weblook$
happy face
Posté le 04-12-2001 à 17:04:12  profilanswer
 

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 :??:

mood
Publicité
Posté le 04-12-2001 à 17:04:12  profilanswer
 

n°78193
Ttienne
C'est pas pour me vanter, mais
Posté le 04-12-2001 à 17:19:07  profilanswer
 

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]

n°78195
weblook$
happy face
Posté le 04-12-2001 à 17:27:23  profilanswer
 

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

n°78207
weblook$
happy face
Posté le 04-12-2001 à 18:07:42  profilanswer
 

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

n°78211
Ttienne
C'est pas pour me vanter, mais
Posté le 04-12-2001 à 18:10:38  profilanswer
 

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:

n°78260
weblook$
happy face
Posté le 04-12-2001 à 21:39:03  profilanswer
 

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...
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  c/c++ et les processus

 

Sujets relatifs
[VB/Winsock] Processus de l'appli ne se ferme pas !SQL Server Kill un processus
[C++] communication entre processus sous linuxALGO synchronisation de processus en C++
[Prog systeme Unix] Ordonnaceur detecter les processus zombie[BC++] Killer un processus
Killer un processus sous WinNT en langage C 
Plus de sujets relatifs à : c/c++ et les processus


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR