У меня есть приложение на C #, в котором я получаю доступ к Outlook через Office PIA для анализа встреч. В моем приложении, когда я создаю свой объект внешнего вида, в диспетчере задач создается новый процесс внешнего вида. Когда я закрываю свое приложение, я также закрываю объект outlook. Это закрывает процесс Outlook в моем диспетчере задач.
Моя проблема, когда пользователь также взаимодействует с внешним видом. В частности, если пользователь открыл Outlook, когда моя программа закрывается, моя программа также закрывает программу Outlook этого пользователя. Экспериментируя с открытием внешнего вида как вручную, так и с моей программой, наблюдая за диспетчером задач, кажется, что одновременно может быть запущен только один экземпляр внешнего вида, и пользователь и моя программа получают доступ к этому же экземпляру, поэтому, когда закрыть вид из моей программы, я также закрыл программу пользователя.
Как ни странно, обратное не так. Если пользователь закрывает outlook во время работы моей программы, его окно исчезнет, но процесс outlook не выключится, и моя программа все еще может продолжиться. Это как если бы окно было только клиентом процесса outlook, хотя для окна нет отдельного процесса. Могу ли я узнать, является ли моя программа единственной, использующей процесс outlook, или открыты ли какие-либо "клиенты окна пользователя", чтобы я мог избежать закрытия outlook, когда он все еще используется?