Как подключить DLL библиотеку ActivX принудительно из другой dll или rtw ?

Автор Dmitry K., 01.08.06, 09:30:07

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Dmitry K.

  В SDK есть пример (kscontr) подключения и запуска библиотек .RTW , но ета штука не работает с dll, причем нет примера ни в одном языке (VB, C++ и т.д.)  А если имеется 5 шт. библиотек на VB то вообще неясно как сделать прогу штоб был выбор подключения из других библиотек. Кто знает решение проблемы прошу дать ответ.

IronMaxxx

Не совсем понятен вопрос. Почему не работает с DLL. DLL - это те же RTW, только расширение другое. Если не очень нравится, вы можете даже вручную его поменять или программно - на саму библиотеку это никак не повлияет...

Dmitry K.

Я как понимаю Вы не пробовали исполнить выше описанное действие ! И даже если поменять расширение с DLL  на RTW то прога ругается на всех и вся а подключать не хочет ! При любом методе переименования ! Нужен другой метод подключения и запуска DLL . Принимаются описания в любом языке.     (для более понятного объяснения пример - из запущеной библиотеки "Конструкторская библиотека" нажав на иконку запустить библотеку с расширением DLL а не RTW.  

Олег Лысенко

Может поможет это.

Когда подключате прикладную библиотеку  в верху меню есть две закладки RTW и ActiveX. Попробуйте выбрать нужную.

Dmitry K.

Я конечно понимаю, что вопрос возможно звучал не очень ведь самое главное библиотека DLL написана в VB - 6.0 и трансформироваться в RTW  она сама не собирается. Но господа хорошие прошу проверить ваши советы прежде чем их писать т.к. с помощью ниже представленного DLL не открыть ни как  даже если менять расширение.

void __fastcall TForm1::btLoadLibraryClick(TObject *Sender)
{
  if ( !kompas.IsEmpty() ) {
    OpenDialog1->Filter = "Библиотеки(*.rtw)|*.rtw";
    OpenDialog1->FileName = "";
    if (OpenDialog1->Execute() ) {
//    загрузить библиотеку
//    ф-ия возвращает HANDLE загруженной библиотеки
      libraryId = kompas.OleFunction( "AttachKompasLibrary", OpenDialog1->FileName);
    };
  }
}

С DLL  НЕ ФУРЫЧИТ !!!

Lito 2

Промоделировал ситуацию.
При изменении rtw на dll в примере

{ загрузить библиотеку
{------------------------------------------------------------------------------}
procedure TForm1.btLoadLibraryClick(Sender: TObject);
begin
  if Kompas <> nil then
  begin
    OpenDialog1.Filter := 'Библиотеки(*.dll)|*.dll';
    OpenDialog1.FileName := '';
    if OpenDialog1.Execute then
    begin
//    загрузить библиотеку
//    ф-ия возвращает HANDLE загруженной библиотеки
      libraryId := Kompas.ksAttachKompasLibrary(OpenDialog1.FileName)
    end;
  end;
end;

В Компасе V8 Plus в папке ImpExp есть библиотеки Конвектора и главная часть которая конвектирукт файл eDrawings.dll и имеет точку входа, запускается без сообщения об ошибке. Для проверки ее подключения зайдите в Менеджер библиотек и подключите прикладную библиотеку eDrawings.dl.
Следующим шагом попробуйте сначала подключить Ваши библиотеки, написанные на VB в вкладке ActiveX, где их необходимо зарегистрировать при первом подключении, нажав кнопку Добавить.

В справке по SDK есть такое примечание Функция ExternalRunCommand - аналог функции LibraryEntry. Ее наличие обязательно, так как именно она передает управление КОМПАС при обращении к библиотеке.
;)