Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

CreateProcess() ne stoppe pas mon prog


Messages recommandés

Posté(e)

Bonjour à tous :)

 

D'habitude, CreateProcess() attend la fin de l'exécution du processus fils qu'il a appelé. Je n'ai pas ce pb avec lui... enfin jusqu'à maintenant.

 


Procedure Appel_Navigateur;
Var
 StartupInfo: TStartupinfo;
 ProcessInfo: TProcessInformation;
 Retour : longbool;
 Appel, Rep : string;
 Erreur : longint;

begin




 //  APPEL du navigateur  --------------------------
 FillChar(Startupinfo,Sizeof(TStartupinfo),0);
 Startupinfo.cb:=Sizeof(TStartupInfo);
 StartupInfo.wShowWindow := SW_SHOWMAXIMIZED;
 StartupInfo.dwFlags := STARTF_USESHOWWINDOW;

 Appel := Nom_Complet_Navigateur;
 Rep := Rep_Navigateur;

 Application.Minimize;


 Retour := CreateProcess(nil,
                    	PChar(Appel),
             				 nil,
                    	nil,
                    	false,
                    	normal_priority_class,
                    	nil,
 			             	PChar(Rep),Startupinfo,ProcessInfo);



 Application.Restore;
 Application.MainForm.BringToFront;


 if Retour <> false then
   	begin
           	WaitforSingleObject(Processinfo.hProcess, infinite);
           	CloseHandle(ProcessInfo.hProcess);
   	end
 else
   	begin
           	RaiseLastOSError;
           	Erreur := GetLastError;
   	end;

end;


 

 

Même le composant CoolTrayIcon n'arrive à rien. La fenêtre de mon appli se réduit (normal), le processus est appelé, mais j'ai la fenêtre de mon appli dans la bascule et la barre des tâches.

 

Qu'est-ce qui arrive ?

 

Merci, parce que là ça fait plusieurs jours que je bidouille pour rien... :(

Posté(e)

Oui : mais mon appli ne se minimise pas. Donc, elle continue, au lieu de stopper en attendant le code de retour du CreateProcess() ! Avant ça marchait. Plus maintenant ! Dingue... J'ai pourtant toutes mes archives de développement, mais il me faudrait remonter à... pour trouver l'époque à laquelle ça fonctionnait. Or, depuis, j'ai corrigé des bugs.

 

Le pb est simple : comment réduire l'appli en icône ? Le composant CoolTRayIcon le fait très bien... mais plus là ! Quant à Application.Minimize, elle s'exécute, puis se restaure AVANT que je lui en donne l'ordre !!

 

Y a un truc, là...

  • Modérateurs
Posté(e)

Bonjour Arnaud, Tigzy,

 

Tu sembles lier le fait que la fenêtre ne disparaisse pas (ne se minimise pas dans la barre de tâches) au fait que l'application concernée continue à tourner. Qu'est-ce qui te faire dire cela ? Disposes-tu d'un moyen de savoir si oui ou non ton application continue à tourner ou se met en wait ?

 

C'est peut-être plutôt dû à un changement de comportement de ton PC, suite à une modification de paramétrage plus ou moins volontaire…

Posté(e)

Changement de carte mère, proc, RAM etc , par exemple ? C'est un fait. Mais le pépin arrivait avant la mise à jour du PC. :mhh:

 

Disposes-tu d'un moyen de savoir si oui ou non ton application continue à tourner ou se met en wait ?

Voilà ! Je veux le mettre en WAIT. Il doit bien y avoir des instructions pour ça ?

 

Je vois qu'il n'est pas en WAIT au fait que la form de l'application appelante réapparaît aussitôt après le CreateProces(), attendant quand-même de tester le code de retour du processus fils. Mais la form ne disparaît pas ! Je peux même y revenir avec la bascule :(

Posté(e)

Bonjour, Tigzy.

 

Pour ça, oui !! J"arrête pas !! Le pas à pas (mode trace) montre clairement que l'instruction APRES le CreateProcess() n'est pas exécutée (test de la valeur Retour), donc on ne sort pas de la procédure, mais la fenêtre réapparaît tout de suite après s'être minimisée.

 

A côté de ça, sur un autre prog, dont l'EXE principal n'est qu'un lanceur des différents modules (EXE eux-même) , tout se passe bien ! Il appelle le module voulu, après s'être mis en barre des tâches, et ne réapparaît qu'à la sortie du module appelé. Nickel.

 

C'est une histoire de fous, ce machin...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...