2013-11-12 2 views
0

Я использую Delphi XE4 для создания программы Voip. Я использую устаревший VOIP SDK. От компании BigSpeed, которая больше не находится вокруг текущего кода, указывает на следующий путь: «C: \ Program Files (x86) \ BigSpeed ​​Voice SDK», где хранятся активные элементы управления x.Создание нового идентификатора GUID или файла Из пути в delphi

LIBID_bsVoiChatCln: TGUID = '{D2A88515-99E0-4EEE-A030-E5D2AB306A03}'; 
    IID_IbsVoiChatClnX: TGUID = '{5055A626-56A1-4E58-A461-000A69CA3E03}'; 
    DIID_IbsVoiChatClnXEvents: TGUID = '{665DB561-22D3-4624-B55B-4416309A2E03}'; 
    CLASS_bsVoiChatClnX: TGUID = '{BE761C1E-1F6C-46F8-A99B-0AB29C9B2D03}'; 

Как я могу создать новый GUID и получить доступ к активным элементам управления x из нового каталога.

ответ

3

Вы не хотите создавать новые GUID. GUID - это идентификаторы этого компонента. Все, что вы хотите сделать, насколько я могу судить по вопросу и вашим комментариям, - это зарегистрировать DLL в другом месте.

В ActiveX DLL почти наверняка используется саморегистрация. Это означает, что вы можете поместить DLL в другое место и зарегистрировать его там.Например, предположим, что DLL находится в:

 
C:\MyFolder\MyDll.dll 

Тогда вы можете зарегистрировать его, выполнив следующую команду:

 
regsvr32 C:\MyFolder\MyDll.dll 
+0

Спасибо, много человек :) –

2

Похоже, вы не понимаете (или не объясняете) отношения между вашей программой, библиотекой и идентификаторами GUID.

Как я создать новый GUID и

1) GUID это просто 128-битное случайное число. Таким образом, вы можете «создать новый GUID», просто отредактировав свою шестнадцатеричную строку. Или вы можете нажать Ctrl + Shift + G в исходном редакторе Delphi в режиме разработки. В режиме исполнения вы можете использовать функцию CreateGUIDSysUtils.

Но я не думаю, что создание нового GUID будет вам никакой пользы. Во всяком случае, это должно означать явно объявленную несовместимость со старыми идентификаторами GUID (следовательно, несовместимость с библиотекой VOIP)

из нового каталога.

2) Почему, по вашему мнению, ваша библиотека VoIP организована как набор элементов управления ActiveX? Просто потому, что там есть GUID? Не любой текстовый файл с GUID внутри был бы ActiveX.

ActiveX - это специально организованные серверы Windows, зарегистрированные в реестре, чтобы любая программа могла их вызывать. Иногда вы можете зарегистрировать их после факта, если установщик потерпел неудачу.

Таким образом, вы должны прочитать инструкции для вашей библиотеки, являются ли они ActiveX или нет, и если они делают, как зарегистрировать их в ОС Windows (должно быть сделанный установщиком библиотеки)

Если установщик не предусматривает его, то вы не можете быть уверены, что библиотека может работать с другое место. Программе требуется не только ваша программа, но и сама библиотека может нуждаться в соединении с другими ее частями.

имеют доступ к программе активного х управляет

3) Если ваша библиотека действительно соответствует спецификациям ActiveX и если он был правильно установлен (зарегистрирован), то вы можете просто импортировать их в среде Delphi и капли их на форму, как вы бросаете таблицы и диалоги.

4) если вы не хотите, чтобы бросить свой компонент VoIP на форму, то вы можете попробовать создать его во время выполнения с CoCreateInstance. Но сначала вам нужно прочитать учебник о Microsoft COM для начинающих. Вы можете пропустить некоторые продвинутые концепции, но вы должны понимать самые основные вещи, например, как интерфейсы схожи и отличаются от классов, как управляется их жизнь, как среда выполнения COM и инициализируется для вашей программы и так далее.

5) вы также можете попытаться обойти надлежащие способы Windows по обнаружению и загрузке сервера и попытаться сделать это самостоятельно, используя процедуры DllGetClassObject в соответствующих DLL. Если библиотека разрешительная, она будет работать. Но если он полагается на сервисы, предоставляемые Windows, которые имеют потенциал для всех видов сбоев и неудовлетворенных ожиданий.

Если мне не изменяет память, вы можете найти примеры такого подхода в начале HTML-справки единиц для Дельфи. Справка Microsoft HTML содержит как late binding с использованием реестра CoCreateInstance и среды выполнения ActiveX, либо early binding в направлении htmlhlp.ocx, рассматриваемых как DLL. Ранние версии API справки HTML для Delphi предоставлены для обоих вариантов. Но я могу ошибаться.

+0

Дело это программа все работает правильно, а VOIP библиотека находится в «C: \ Program Files (x86) \ BigSpeed ​​Voice SDK \ ', но скажу, что я хочу попробовать переместить библиотеку в папку с моими программами, как мне связать ее снова с помощью GUID или что бы это ни было? –

+0

Почему вы думаете, что можете переместить библиотеку? почему, по вашему мнению, библиотека может работать с неправильным путем? –

+0

Прочтите некоторые ABC о COM и ActiveX. Эти объекты должны быть зарегистрированы в глобальном пространстве имен Windows. Вам следует удалить библиотеку, а затем переустановить ее в нестандартное место. Если это позволяет. Все грязные трюки, чтобы «просто переместить», могут работать и могут потерпеть неудачу. И ваш опыт работы в Windows, по-видимому, намного меньше, чем требуется, чтобы перехитрить Windows и заставить его работать нестандартными способами. –

Смежные вопросы