RaiseEvent Late Binding, ActiveX .dll - VB

Узнай цену своей работы

Формулировка задачи:

Суть вопроса - как ловить событие при позднем связывании с использованием ActiveX.dll? Пример раннего связыванияhttp://forums.codeguru.com/showthrea...to-raise-event Делаю плагины для программы, ранее связывание меня не устраивает Возможно ли при позднем связывании поймать Event? Позднее связывание делаю так
Листинг программы
  1. Dim Calc As Object
  2. Set Calc = CreateObject("Calc.myCalc")
В классе (dll)
Листинг программы
  1. Public Event TestEvent()
  2. Public Sub ShellTestEvent()
  3. RaiseEvent TestEvent
  4. End Sub
Вызываю и ловлю
Листинг программы
  1. Private Sub cmd_Click()
  2. Calc.ShellTestEvent
  3. End Sub
  4. Private Sub Calc_TestEvent()
  5. MsgBox "Event Raised from DLL"
  6. End Sub
=================================== еще вопрос по поводу вызова с помощью vbs у меня не работает Пример возьму от сюда Форма в ActiveX Dll тут

Catstail

выложил календарь на ActiveX.dll и vbs скрипт для его вызова, у меня вылетает вот такая ошибка
Спойлер
скрипт ничем не изолирован и не ограничен

Решение задачи: «RaiseEvent Late Binding, ActiveX .dll»

textual
Листинг программы
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.  ClassFactory:IClassFactory2;
  4.  DllHandle:THandle;
  5.  ADllGetClassObject:TDllGetClassObject;
  6.  AObject:INoRegister;
  7. begin
  8.  DllHandle:=LoadLibrary('C:\Program Files\...путь...\noregister.dll');
  9.  ADllGetClassObject:=GetProcAddress(DllHandle,'DllGetClassObject');
  10.  OleCheck(ADllGetClassObject(CLASS_NoRegister_,IClassFactory2,ClassFactory));
  11.  ClassFactory.CreateInstance(nil,INoRegister,AObject);
  12.  OleCheck(AObject.Method1);
  13. end;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут