Конференция "Corba" » Как вызвать конкретную версию MS Word (отличную от default)??? [Delphi, Windows]
 
  • GreyWolf © (25.10.10 00:46) [0]
    Доброго времени суток.

    Столкнулся с проблемой - при попытке вызвать любую версию MS Word для использования как COM-Server, запускается утсановленная по умолчанию. В системе MS Windows 2000 установлены MS Word 2000 и MS Word 2003. Пытаюсь обеспечить возможность выбора версии через оператор

    CreateOleObject('Word.Application.9') или
    CreateOleObject('Word.Application.11')


    Проблема в том, что при исполнении любого из них вызывается та версия MS Word, которая использовалась последней (что Word 2000, что 2003 при первом ручном запуске регистрирует себя как Word по умолчанию, показывая соотв. окошечко).
    В системном реестре ключи
    HKEY_CLASSES_ROOT\Word.Application.11
    HKEY_CLASSES_ROOT\Word.Application.9
    HKEY_CLASSES_ROOT\Word.Application.8
    содержат всегда один и тот же CLSID
    {000209FF-0000-0000-C000-000000000046}.
    и в резделе
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{000209FF-0000-0000-C000-000000000046}
    значение LocalServer32 указывает на последний зарегистрировавший себя MS Word.

    Вопрос: как мне все-таки обеспечить возможность запуска разных версий MS Word, в том числе и "non-default" ?
  • YurikGL © (27.10.10 19:28) [1]
    Можно через shellexecute запустить что надо, а потом подключиться к запущенному серверу...
  • GreyWolf83 (28.10.10 14:29) [2]
    А вы знаете, как подключиться к запущенному серверу, имея например его ProcessId, Handle? Дело в том что GetActiveOleObject вернет интерфейс от неизвестно какого запущенного процесса, не обязательно нашего.
  • GreyWolf (28.10.10 14:31) [3]
    Это я спрашивал. Еще проблема с ShellExecute  в том, что если вручную запускать Word, то он регистрирует себя как Word по умолчанию, чего хотелось бы избежать.
  • YurikGL © (28.10.10 19:45) [4]
    А какова задача в целом?
  • GreyWolf (29.10.10 12:55) [5]
    Это и есть часть задачи - обеспечить возможность выбора версии Word для запуска в режиме Automation server-а. Без этого тоже можно, просто хотелось бы иметь эту "фичу". Программа работает с документами, используя Word COM-server, и разные его версии могут например потреблять меньше памяти или поведение некоторых методов интерфейсов может различаться. В общем, как я понял, в таких рамках задача не имеет решения.
 
Конференция "Corba" » Как вызвать конкретную версию MS Word (отличную от default)??? [Delphi, Windows]
Есть новые Нет новых   [118642   +47][b:0][p:0.001]