Question

Existe-t-il un moyen de vérifier si un processus Microsoft Office (c.-à-d.Word, Excel) s'est bloqué lors de l'utilisation de la bureautique ?De plus, si le processus est bloqué, existe-t-il un moyen d’y mettre fin ?

Était-ce utile?

La solution

Permettez-moi de commencer par dire que je ne recommande pas de faire cela dans un service sur un serveur, mais je ferai de mon mieux pour répondre aux questions.

L’exécution en tant que service rend le nettoyage difficile.Par exemple, avec ce que vous utilisez en tant que service, survivez en tuant un mot bloqué ou en excellant.Vous pourriez être dans la position de devoir supprimer le service.Votre service s'arrêtera-t-il si Word ou Excel est dans cet état.

Un problème lorsque vous essayez de tester s'il est bloqué est que votre test pourrait provoquer le démarrage et le fonctionnement d'une nouvelle instance de Word, tandis que celle que le service exécute serait toujours bloquée.

La meilleure façon de déterminer s'il est bloqué est de lui demander de faire ce qu'il est censé faire et de vérifier les résultats.J'aurais besoin d'en savoir plus sur ce qu'il fait réellement.

Voici quelques commandes à utiliser dans un fichier batch pour le nettoyage (les deux doivent être dans le chemin) :

  • sc stop servicename - arrête le service nommé servicename
  • sc start servicename - démarre le service nommé servicename
  • sc query servicename - Interroge l'état du nom du service

  • taskkill /F /IM excel.exe - met fin à toutes les instances d'excel.exe

Autres conseils

Je me souviens de l'avoir fait il y a quelques années - je parle donc d'Office XP ou de 2003 jours, pas de 2007.

De toute évidence, une meilleure solution d'automatisation de nos jours consiste à utiliser le nouveau format XML qui décrit docx, etc. à l'aide de l'espace de noms System.IO.Packaging.

À l’époque, je remarquais que chaque fois que MSWord sortait du seau et en avait assez, un processus appelé « Dr.Watson" tournait sur la machine.C'était mon premier indice que Word avait trébuché et s'était renversé.Parfois, je peux en voir plus d'un WINWORD.EXE, mais mon code était juste utilisé pour rechercher le bon docteur.Une fois que j'ai vu ça (en code), j'ai tout tué WINWORD.EXE traite le bon Docteur lui-même et a relancé le processus de torture de Word :-)

J'espère que cela vous donnera quelques indices sur ce qu'il faut rechercher.

Tous mes vœux,

Rob G.

P.S.Je pourrai peut-être même retrouver le code dans mes archives si vous ne réussissez pas !

Je peux répondre à la seconde moitié ;si vous avez une référence à l'objet application dans votre code, vous pouvez simplement appeler "Quit" dessus :

private Microsoft.Office.Interop.Excel.Application _excel;
// ... do some stuff ...
_excel.Quit();

Pour vérifier un processus bloqué, je suppose que vous voudriez essayer d'obtenir des données de l'application et voir si vous obtenez des résultats dans un délai raisonnable (vérifiez dans une minuterie ou un autre fil ou quelque chose du genre).Il existe probablement un meilleur moyen.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top