| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: ActiveX/СОМ/CORBA > Delphi+Word |
| Автор: VictorBondarenko 24.6.2005, 14:48 |
| Уважаемые друзья! У меня возникла такая проблема. Как определить из программы на Дельфи: 1. Версию установленного на компе Ворда. 2. Подключена ли в Ворде возможность работы с макросами на Visual-Basic. Заранее благодарен за любые идеи, т.к. пока мне не понятно как вообще подступиться к этой проблеме. С уважением и благодарностью за внимание и помощь, Виктор |
| Автор: _hunter 24.6.2005, 15:01 |
| 1 -- смотри HKEY_CLASSES_ROOT\Word.Application\CurVer |
| Автор: Poseidon 24.6.2005, 17:47 | ||
|
| Автор: VictorBondarenko 27.6.2005, 10:46 |
| Уважаемый Poseidon ! Твой совет http://vingrad.ru/DELPHI-DLP-001400 я посмотрел и реализовал для просмотра версии установленного на компе Ворда. Однако под версией там понимается язык версии и прога мне выдает слово "Русский", а нужно версия в смысле Word 97, Word 2000, Word 2003. Если у кого-то есть какие-либо идеи на этот счет, то заранее благодарен за внимание и помощь. Виктор |
| Автор: Kesh 27.6.2005, 10:55 | ||
Как уже говорил _hunter
11 - Word 2003 10 - Word XP 9 - Word 2000 и т.д. |
| Автор: Albinos_x 27.6.2005, 11:15 | ||
|
| Автор: Kesh 27.6.2005, 11:25 |
| Albinos_x Да ну... Зачем туда еще и WordApplication кидать? Можно чисто реестром обойтись... Все равно он оттуда его и возьмет... (и то не факт...) |
| Автор: VictorBondarenko 27.6.2005, 11:34 | ||
| Kesh, большое спасибо, я видел эти 11, 9, но как связать эти цифры с версией не знал. Можно ли аналогично проверить возможность работы с Visual-Basic в Word'е ? Если в реестре есть ключ Word.Basic , то означает ли это, что Visual-Basic подключен и в Word'е можно работать с макросами на Visual-Basic? И вот таким кодом можно выявить подключен ли Visual-Basic к Word'у
Но я попробовал деинсталлировать у себя в Word'е Visual-Basic но , ключ Word.Basic в реестре как был, так и остался. Может у него смысл какой-то другой? Может кто чего подскажет? Виктор |
| Автор: Albinos_x 27.6.2005, 12:03 | ||||
Это всего лишь пример... я предположил, что необходимо от версии ворда реализовывать, те или иные возможности, не поддерживаемые в младших версиях.
Поробуй весь ворд деинсталировать, увидишь, что половина ключей в реестре останется... Думаю, надо проверять в реестре раздел, который указывает на комплект установки |
| Автор: VictorBondarenko 27.6.2005, 12:28 |
| Albinos_x, ты написал: Думаю, надо проверять в реестре раздел, который указывает на комплект установки. А более точно, что это за раздел, потому, что я переблал вроде бы все разделы реестра, но ничего подходящего не заметил. |
| Автор: Albinos_x 27.6.2005, 13:37 | ||
что-то нашёл, но пока разбираюсь как это использовать... Добавлено @ 13:43 можно попробовать, не знаю как при деинсталяции будет этот параметр или нет hkey_lokal_machine\software\microsoft\windows\cuttentversion\installer\folders |
| Автор: VictorBondarenko 27.6.2005, 14:09 |
| Спасибо, Albinos_x, но в hkey_lokal_machine\software\microsoft\windows\cuttentversion\installer\folders что-то ничего не видно, что бы указывало на установку Visual-Basic в Worde'е. Я тоже попробую "покрутить" этот раздел. |
| Автор: Albinos_x 27.6.2005, 17:41 |
| там указана папка где установлен VB, можно проверять есть такая или нет и так узнать установлен ли Visual-Basic, ну и отсюда следует если он установлен, то с ним ворд работает. заколебался по всему реестру лазить, кое-что нашёл, но там в параметрах либо набор цифр либо строка иероглифов, как это использовать не нашёл, поэтому могу предложить только этот вариант. Ну ещё можнопроверять dll-ку Visual-Basic её адрес можно найти в разделе: hkey_local_machine\software\microsoft\vba По идее он где-то ещё должен оставлять информацию об установленой комплектации, но где - пока не нашёл... |
| Автор: VictorBondarenko 1.7.2005, 15:05 |
| Я подумал: "Как проверить установлен ли Visual-Basic в Word'е". Да просто запустить какой-либо работающий проверенный макрос. Если он сработает VBA установлен, а если нет - то нет. Для этого я написал такой код procedure TForm1.Button4Click(Sender: TObject); var Word:variant; begin Word:= CreateOleObject('Word.Application'); Word.Application.Visible:=true; Word.Documents.Open('E:\Version\t2.doc' ); try Word.Application.Run( 'A' ); except on EOleException do showmessage( ' Visual-Basic не подключен'); end; end; Этот код работает. Макрос запускаестя. Но возникла такая проблема. Я для проверки работы обработчика прерываний дал имя несуществующего макроса. Моя обработка прерывания EOleException не срабатывает и работа на on EOleException do ... не выходит. Работает какой-то системный обработчик. Может, что-то не так написал. Заранее благодарен за любую подсказку. Виктор |