Конференция "Corba" » Как временно зарегистрировать TypeLib? [Delphi, Windows]
 
  • Дмитрий С (27.03.09 11:37) [20]
    Я думаю, что все-же нельзя. Небольшое углубление показывает, что в новых версиях окон есть функция RegisterTypeLibForUser, которая эту роль и выполняет.

    RegisterTypeLibForUser has functionality identical to RegisterTypeLib except that type library is registered for use only by the calling user identity.

    Requirements:
    Windows NT/2000: Requires Windows Server 2003 or later.  Windows 95/98: Not supported.

    Поэтому остановлюсь пока на IDispath
  • Григорьев Антон © (28.03.09 09:16) [21]
    Без регистрации обойтись можно, но очень хлополтно. Если сервер и клиент выполняются в разных адресных пространствах, то кто-то должен построить для них заместителя и заглушку. Сервер, в принципе, сам может построить заглушку в своём адресном пространстве, но клиенту по-любому её должна загрузить система из внешней библиотеки. Система запрашивает у COM-объекта интерфейс IMarshal, и если объект его реализует, то с его помощью может сам построить заглушку, а также указать системе, какую библиотеку загрузить в адресное пространство клиента, чтобы она построила там заглушку (эту библиотеку тоже должны будете написать вы сам). Но если IMarshal, как это обычно бывает, не реализован, то система проверяет, как интерфейс зарегистрирован в реестре, и ищет соответствующую proxy/stub dll (в случае стандартного маршалинга) или библиотеку типов (в случае универсального маршалинга). И тут, видимо, ничего не сделаешь, они обязаны быть зарегистрированными в реестре, чтобы система их нашла.

    Если вас заинтересовал IMarshal, об этом можно почитать здесь: http://www.rsdn.ru/article/com/marsh.xml#EGFAE
    Но если ограничения на типы и производительность, которые даёт IDispatch, вас устраивают, намного проще будет использовать его.
 
Конференция "Corba" » Как временно зарегистрировать TypeLib? [Delphi, Windows]
Есть новые Нет новых   [134430   +1][b:0][p:0]