Форум: "Основная";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
ВнизСобытие из DLL в Main Application Найти похожие ветки
← →
cantalia (2007-09-12 11:04) [0]Как и где объявить функцию, которая происходила бы по нажатию кнопки в DLL(COM Server) и отдавала бы результат клиенту? Кнопка в DLL создаётся динамически.
Функция вида:function SendAction(act:PChar):HResult; stdcall;
Объявил в DLL и в главном приложении, событие в DLL проходит, но в клиент не доходит.
← →
Сергей М. © (2007-09-12 11:25) [1]см. стандартную справку к св-ву TAutoObject.EventSink
← →
den303_work © (2007-09-12 11:35) [2]Спасибо.
А если без COM, просто в библиотечке DLL?
← →
den303_work © (2007-09-12 11:36) [3]Это я cantalia :o)
Второй ник
← →
Сергей М. © (2007-09-12 11:50) [4]
> Это я cantalia :o)
> Второй ник
>
Ты Шиву многоликий ?)
> А если без COM, просто в библиотечке DLL?
1. Объявляешь тип колбэк-процедуры
TEventHandler = procedure(Params: TSomeParams); stdcall;
2. Объявляешь и реализуешь экп.процедуру
procedure SetEventHandler(AHandler: TEventHandler); stdcall;
begin
ExternalHandler := AHandler; //ExternalHandler - переменная (или поле какого-либо подходящего объекта) типа TEventHandler
end;
3. В обработчике нажатия кнопки
if Assigned(@EventHandler) then
EventHandler(параметры обратного вызова)
← →
den303_work © (2007-09-12 12:04) [5]
> Ты Шиву многоликий ?)
Ага ;o)
На другом форуме под первым ником сижу, вбил по привычке
> 1. Объявляешь тип колбэк-процедуры...
Пасиб, разобрался.
А вот с COM не очень. Есть ли какие простейшие примеры построения COM-объекта с возможностью пересылки сообщений туда-сюда? Весь Яндекс перерыл - ничего не нашёл... :o(
И вообще: надо построить inproc сервер, который строит дочернюю форму. Какой объект использовать? Automation? Или ComServ достаточно?
← →
Сергей М. © (2007-09-12 12:11) [6]Проще всего плясать от TActiveForm (см. справку)
← →
den303_work © (2007-09-12 12:57) [7]
> Сергей М. © (12.09.07 12:11) [6]
Хоть один нормальный примерчик с TActiveForm, плз! Все примеры, найденные мной, ипсользуют iExporer. А мне-то надо из приложения вызывать
← →
cantalia (2007-09-12 13:01) [8]И вообще, является ли ActiveForm (ocx) "внутрипроцессорной COM-библиотекой" (фраза из ТЗ). Имхо, надо dll...
← →
Сергей М. © (2007-09-12 13:05) [9]
> Хоть один нормальный примерчик с TActiveForm
Ищи среди демо-проектов в составе Делфи, там точно есть.
> является ли ActiveForm (ocx) "внутрипроцессорной COM-библиотекой"
Явлется.
> Имхо, надо dll
ocx и есть dll
← →
den303_work © (2007-09-12 13:43) [10]Подскажите, плз, как этот TAutoObject.EventSink объявить. В справке написано Property....
← →
Сергей М. © (2007-09-12 13:46) [11]см. справку на тему "Managing events in your Automation object"
← →
den303_work © (2007-09-12 14:02) [12]К сожалению, времени изучать весь COM не осталось (впервые столкнулся), переписывать проект на ActiveForm не успеваю. Разобрался с коклассами, передачу параметров в dll решил. Осталось передать параметры из dll по событию OnClick на кнопке, расположенной (и в рантайм генерируемой!) на DLL-форме. Не могу додуматься, как генерировать события.
Предложенный Вами EventSink подходит, как я понял, тока для Automation/ActiveForm, либо я опять не пойму, как события объявлять.
Есть ли другие, более простые способы реализации данной задачи, чем дотошно изучить всё, что касается COM?
ЗЫ: Как назло, примеров вообще нет, в справке примеров вообще нет, примеры из поставки D7 совсем не из той области, а книги читать не успеваю....
ЗЫ2: Звиняйте за сумбур :o(
← →
Сергей М. © (2007-09-12 14:07) [13]
> Есть ли другие, более простые способы реализации данной
> задачи
Решение в [4] чем не устроило ?
← →
den303_work © (2007-09-12 14:14) [14]
> Решение в [4] чем не устроило ?
Дык это ж не COM! Или нормально? Я с COM дела не имел, а в ТЗ чётко сказано "СОМ-библиотеку".
← →
Сергей М. © (2007-09-12 14:37) [15]
> Дык это ж не COM!
Дык это ж как ответ на
> А если без COM, просто в библиотечке DLL?
> Я с COM дела не имел, а в ТЗ чётко сказано "СОМ-библиотеку"
> в справке примеров вообще нет
http://www.podgoretsky.com/ftp/Docs/Delphi/Tenser/2/index2.htm
← →
den303_work © (2007-09-12 14:54) [16]
> http://www.podgoretsky.com/ftp/Docs/Delphi/Tenser/2/index2.
> htm
Большое спасибо, изучаю. Вроде то, что нужно
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c