Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Определение наличия/весии MS Office

14K
06 сентября 2006 года
Ёж_туманный
17 / / 16.06.2006
Собственно, по сабжу: нужно определить, установлен ли на компьютере офис, и, если установлен, то какой (версия). Подозреваю, что делать нужно через реестр. Вопрос - в какой ключ тыкаться :)

Заранее спасибо.
10
06 сентября 2006 года
Freeman
3.2K / / 06.03.2004
[QUOTE=Ёж_туманный]Вопрос - в какой ключ тыкаться :)[/QUOTE]
Word.Application, Excel.Application и т. п. для соответствующих приложений. Возможно, Office.Document (могу напутать с названием COM-класса), если требуется проверка наличия Офиса как такового. Внутри данных ключей хранится ссылка, какая версия из установленных является версией по умолчанию - одновременно может быть установлено несколько версий программ.

В WinAPI должна быть функция CLSIDFromProgID, возвращающая GUID класса, если сервер установлен, и код ошибки в противном случае. Возможно, где-то в группе с ней есть и функция получения версии(й) серверов.

По-любому, пользование API является более надежным способом, чем проверка значений ключа вручную. Не факт, что в очередной версии Винды они будут храниться тоже в HKEY_CLASSES_ROOT. Поэтому будем считать чтение MSDN домашним заданием. ;)
14K
10 сентября 2006 года
Ёж_туманный
17 / / 16.06.2006
[QUOTE=Freeman]Word.Application, Excel.Application и т. п. для соответствующих приложений. Возможно, Office.Document (могу напутать с названием COM-класса), если требуется проверка наличия Офиса как такового. Внутри данных ключей хранится ссылка, какая версия из установленных является версией по умолчанию - одновременно может быть установлено несколько версий программ.[/QUOTE]

наверное путаешь с COM:
 
Код:
using namespace Excel;
_ApplicationPtr excel("Excel.Application");

но, думаю, вылова exception`а при отсутствии офиса как такового мне хватит: выяснилось, что при компилляции под MSO97 код работает нормально и с боллее новыми версиями, а обратное, увы, не верно

Возник новый вопрос: какие файлы кроме:
MSO97.DLL
EXCEL8.OLB
VBEEXT1.OLB
нужны, чтобы корректно всё компилилось (нужен только Excel, так что MSWORD8.OLB и проч. не предлагать :) )
И вообще, можно ли выдрать из офиса все нужные библиотеки, чтобы сложить их вместе (на машине стоит нормальный оффис, а компилить всё из-под VMWare каждый раз не хочется)
14K
14 сентября 2006 года
Ёж_туманный
17 / / 16.06.2006
хм... лан, поговорю с умным человеком...
может кому-нибудь будет интересно:
импортировать COM, использую файлы 97го офиса с установленным 2000 или выше не получается - в vbeext1.thl появляется ссылка на некий CommandBar (из офиса версии после 97го), из-за чего всё перестаёт компилиться. Однако с файлами MSO2000 такого глюка уже не наблюдается и получающийся код нормально работает под любым офисом >= 2000.

А как определить версию установленного офиса (и установлен ли?), желательно средствами WinAPI - вопрос всё-таки открытый...

Закрыто:
 
Код:
Excel::_ApplicationPtr excel("Excel.Application");
        _bstr_t versionString = _bstr_t( excel->Version );
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог