Как узнать запущены ли экзеловские аппликации..
От: kolja2003 Россия  
Дата: 13.03.07 12:25
Оценка:
Работаю с COM Экзела. Создаю свой объект с помощью CreateOLEObject('Excel.Application") потом работаю с ним. Но вот возникла проблема: если паралельно на том же компе открыты еще другие экзеловские аппликации и идет интерактивная работа в них тогда в моей проге возникает exception. Тип эксепшена значения не имеет так как бывают разные. Но причина установлена точно — в том что параллельно идет интерактивная работа в другой открытой экзел-аппликации.
Вопрос: как из моей программы закрыть все открытые экзелевские аппликации? Или хотябы обнаружить что есть открытые экзел-аппликации чтобы сделать диагностику?
Re: Как узнать запущены ли экзеловские аппликации..
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 13.03.07 13:18
Оценка:
Здравствуйте, kolja2003, Вы писали:

K>Вопрос: Или хотябы обнаружить что есть открытые экзел-аппликации чтобы сделать диагностику?

Есть такая функция GetActiveObject

ну или можно в тупую: пробежаться по процессам и поискать Excel.exe.
github.com/dmitrigrigoriev/
Re[2]: Как узнать запущены ли экзеловские аппликации..
От: kolja2003 Россия  
Дата: 14.03.07 10:08
Оценка:
Здравствуйте, SkyKnight, Вы писали:

SK>Здравствуйте, kolja2003, Вы писали:


K>>Вопрос: Или хотябы обнаружить что есть открытые экзел-аппликации чтобы сделать диагностику?

SK>Есть такая функция GetActiveObject

SK>ну или можно в тупую: пробежаться по процессам и поискать Excel.exe.


Спасибо. Посмотрел описание GetActiveObject. Выглядит так что по коллу: Marshal.GetActiveObject("Excel.Application"); если открыто несколько несколько объектов то выдаст первый попавшийся. Если так то можно конечно в цикле пробежаться и закрыть все. Я так понимаю что закроет все объекты созданные DCOM server process launcher. Правильно? (конечно я проверю но может вы уже знаете)

Но вот если Экзел аппликация была открыта интерактивно то есть с помощью exploler.exe то видимо не будет доступна этой функции?
Re[3]: Как узнать запущены ли экзеловские аппликации..
От: SkyKnight Швейцария https://github.com/dmitrigrigoriev/
Дата: 16.03.07 12:30
Оценка:
Здравствуйте, kolja2003, Вы писали:

K>Я так понимаю что закроет все объекты созданные DCOM server process launcher. Правильно? (конечно я проверю но может вы уже знаете)

Должна так и сделать. Я просто давно уже ничего такого не писал и подзабыл немного.

K>Но вот если Экзел аппликация была открыта интерактивно то есть с помощью exploler.exe то видимо не будет доступна этой функции?

Должна быть так же доступна, потому что как-то мы писали систему, которая должна была работать с Microsoft Office и именно ей проверяли есть ли еще активные объекты. Но к сожалению уже сейчас я тоже не очень помню это все. Надо попробовать
github.com/dmitrigrigoriev/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.