J'ai développé un Addin partagé pour Excel en utilisant l'interface Extensibilité IDTExtensibility2 dans Visual Studio 2008.Excel Addin - OnDisconnection/OnBeginShutdown pas appelé logoff
Il est assez basique dans la fonctionnalité. Quand un classeur est ouvert, il est stocké dans une liste de classeurs ouverts, quand il est fermé, addin va créer un nouveau fichier texte puis écrire du XML dans le fichier, ce fichier est ensuite lu par un autre processus qui désérialise le XML . L'addin fonctionne normalement - si l'utilisateur ouvre et ferme un fichier alors l'addin fait ce qu'il devrait, s'il quitte Excel avec des classeurs ouverts, il fait ce qu'il devrait faire.
Le problème est lorsque l'utilisateur ouvre Excel avec des classeurs ouverts et qu'il se déconnecte. Les deux méthodes: OnDisconnection et OnBeginShutdown ne semblent pas du tout appelées.
J'ai fait deux choses à tester cela:
J'ai créé un TextWriterTraceListener qui écrit dans un fichier journal lorsque ces deux méthodes ont été appelés. Lorsque Excel est normalement fermé, ils sont touchés et les informations sont consignées dans le fichier journal, mais lorsqu'un utilisateur se déconnecte, il n'y a rien dans le fichier journal.
À l'intérieur de ces deux méthodes en utilisant File.CreateText (filename), j'ai créé un fichier vide. Lorsque l'utilisateur quitte normalement Excel ces fichiers sont créés, mais une fois de plus, lorsque Excel est fermé par le biais d'une déconnexion, ces fichiers ne sont pas créés.
Est-ce que quelqu'un a des idées pour contourner ce problème? J'ai besoin de capturer quand Excel est fermé lorsque l'utilisateur se déconnecte de leur machine ...
J'utilise déjà WorkbookBeforeClose, dans une manière détournée, mais comme un test je l'ai changé pour qu'il se connecter à mon TextWriterTraceListener quand on l'appelle. Lorsque Excel se ferme normalement, le message de débogage est écrit dans le journal. Toutefois, lorsque Excel est fermé via le journal d'utilisateur, le message de débogage n'est pas écrit dans le fichier journal – kzhen
En outre, il n'explique toujours pas pourquoi OnDisconnection et OnBeginShutdown pas appelé ... – kzhen