[Windows] Comment lancer un programme en tache de fond ? RESOLU

Comment lancer un programme en tache de fond ? RESOLU [Windows] - Divers - Programmation

Marsh Posté le 17-02-2003 à 17:08:25    

Nous avons une appli développée sous SAS qui va générer un fichier sous Word 97 (via lien DDE).
 
Pour des questions de buffer, dans le cas de gros fichiers Word, l'appli SAS va lancer et fermer Word plusieurs fois à la suite pour générer un document de taille importante (elle reprend à chaque ouverture là où elle en était restée à la dernière fermeture).
 
Le problème est le suivant : à chaque ouverture, Word se lance en premier plan. Or nos utilisateurs veulent pouvoir continuer de travailler sur l'appli pendant que celle-ci génère le fichier Word, ce qui n'est guère envisageable avec une fenêtre Word s'ouvrant et se fermant toutes les 30 secondes !
 
Comment lancer un programme sous Windows de façon à ce que celui-ci soit en arrière-plan ?
 
Merci pour vos suggestions !


Message édité par irulan le 17-02-2003 à 18:06:18
Reply

Marsh Posté le 17-02-2003 à 17:08:25   

Reply

Marsh Posté le 17-02-2003 à 17:19:05    

Je connais pas du tout DDE.
Si tu pouvais me donner des infos sur comment se passe le pilotage de Word via DDE.
Pour l'instant, moi je bataille avec COM/OLE et c'est pas trivial ...
J'aimerais savoir comment tu démarres Word.
D'apres ce que j'ai lu ici :
http://msdn.microsoft.com/library/ [...] change.asp
tu as un handle de la fenetre Word.
Comment l'obtiens-tu ?


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

Marsh Posté le 17-02-2003 à 17:29:26    

Désolé HelloWorld, je ne connais pas le détail de l'aspect technique du projet, je posais la question car nos prestataires ne savent pas comment résoudre ce problème ;)

Reply

Marsh Posté le 17-02-2003 à 17:43:40    

Ben si tu veux lancer Word en tache de fond,  faut deja te demander ou c'est qu'il est lancé dans ton prog.
C'est ca que je te demande.


Message édité par HelloWorld le 17-02-2003 à 17:43:55

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

Marsh Posté le 17-02-2003 à 17:45:03    

Petite précision : Word est lancé à partir d'un appel DOS à winword.exe, donc si vous connaissiez un petit paramètre qui permette de lancer une appli en arrière-plan ça serait super.
 
Edit : cela répond-t-il à ta question HelloWorld ?


Message édité par irulan le 17-02-2003 à 17:46:00
Reply

Marsh Posté le 17-02-2003 à 17:49:40    

Eh beh voila !
Sauf que "appel DOS" je vois pas trop ce que c'est ... system() ?
Remplace par ShellExecute, ca devrait faire ton bonheur :
http://msdn.microsoft.com/library/ [...] xecute.asp
En dernier parametre, tu mets SW_HIDE.


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

Marsh Posté le 17-02-2003 à 17:57:55    

Ben ce que j'appelle un appel DOS, c'est lorsque tu te mets sous l'invite de commande DOS, tu tapes 'winword.exe' et ça te lance Word sous Windows.
 
En gros l'appel à Word se fait sous SAS, qui lui-même passe par le DOS (la syntaxe sous SAS est du type 'blablabla winword.exe' où blalblabla est spécifique à SAS)
 
En fait ce que j'espérais, c'est qu'il existe un petit paramètre sous DOS (du genre -background :D) que tu utilises du style winword.exe -background te lances Word en arrière-plan ...
 
Ou éventuellement en passant par un petit .bat...
 
Mais je ne suis pas trop chaud pour utiliser des fonctions win32 j'ai peur que cela entraîne trop de trucs à dvper pour ce genre de prob ?

Reply

Marsh Posté le 17-02-2003 à 18:06:00    

Bon j'ai trouvé ce que je voulais : en fait sous l'invite de commande, il suffit de taper 'start /min' avant le nom du programme, et ca roule !
 
Pour essayer, vous pouvez taper 'start /min winword' et ça vous lance Word directement iconisé dans la barre des tâches.

Reply

Marsh Posté le 17-02-2003 à 18:14:36    

J'y avais pensé mais je suis pas fan de ce procédé.
Tu peux rajouter /LOW aussi pour encore moins pénaliser les utilisateurs.


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

Sujets relatifs:

Leave a Replay

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