Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача события из dll


JaoDa ©   (2005-02-04 12:59:00) 

можно ли передать событие из DLL-ки в основную программу? Если да, то как?


JaoDa   (2005-02-04 23:22:00) [1]

Пасиб всем, callback кажись то, что нужно

зы: с COM-ом заморачиваться смысла нет, я наоборот от него бегу.


Бином Ньютоныч   (2005-02-04 20:53:00) [2]

>Eraser ©   (04.02.05 20:44) [15]

Да я так...не всерьез:) А то "Во-во, почти оно", и тут-же - дай примерчик.


Eraser   (2005-02-04 20:44:00) [3]

JaoDa
Маленьким примерчик не получиться, но там всё очень просто. В сети полно примеров. Ищи на предмет: callback delphi dll

Набережных С. ©  
Не стОит так заморачиваться. По моему для этих целей есть callback процедуры.


Набережных С.   (2005-02-04 20:17:00) [4]

>JaoDa
>Во-во, почти оно

А зачем почти, когда можно точно?
Есть множество способов. Про сообщения уже говорили. Кроме того, ехе-файл тоже может экспортировать функции, которые библиотека может найти GetProcAddress(0,... Далее, приложение может вызвать функцию длл и в ней передать адрес своей функции обратного вызова. Вместо адреса функции туда можно передать интерфейс. Приложение может зарегистрировать свой СОМ-объект в таблице активных объектов, а длл получить его интерфейс. Можно передать безымянный канал или эвент. Можно еще много чего вплоть до извращений, выбирай на вкус.

>а можно масенький живой примерчик?

Не-а. RTFM


JaoDa   (2005-02-04 15:22:00) [5]

Суть такова - передать из dll в основную программу сообщение или событие о том что в ней что-то произошло *к примеру пришла почта, которую нужно забрать

Вообще хотел через event, но походу дела, мечтать не вредно :)) *ой только камнями не кидайте...

>wl
>С помощью export-функции передаешь Handle окна( которое будет >обрабатывать сообщения) в dll, а уже из dll вызываешь >SendMessage(Handle, WM_USER+..., ..., ...);

Дык, у меня и окон там нет и боюсь что что-нить потеряется...

>Вот пример - процедура из dll запускает поток и возвращает >управление программе. Чтобы уведомить программу о завершении >потока, можно из него послать user-defined message.

Во-во, почти оно...а моно масенький живой пример? :)

>Eraser
>Событие в строгом понимании Object Pascal- нельзя.
>А вообще почитай про функции обратного вызова.

Ок, пойду почитаю...а можно масенький живой примерчик? :)


wl   (2005-02-04 14:06:00) [6]

Digitman ©   (04.02.05 14:02) [11]

понимаю конечно. но боюсь пока JaoDa не пояснит что именно он понимал под этим словом, дискуссию можно пока приостановить


Digitman   (2005-02-04 14:02:00) [7]


> wl ©   (04.02.05 13:46) [8]


ты разницу между message (сообщение) и event (событие) вообще понимаешь ? или для тебя эти понятия тоже индифферентны ?


Eraser   (2005-02-04 14:01:00) [8]

JaoDa
можно ли передать событие из DLL-ки в основную программу? Если да, то как?


Событие в строгом понимании Object Pascal- нельзя.
А вообще почитай про функции обратного вызова.


Eraser   (2005-02-04 14:00:00) [9]

JaoDa
можно ли передать событие из DLL-ки в основную программу? Если да, то как?


Событие в строгом понимании Object Pascal- нельзя.
А вообще почитай про функции обратного вызова.


wl   (2005-02-04 13:46:00) [10]

Ну почему же - всё правильно сформулировано, imho.
Вот пример - процедура из dll запускает поток и возвращает управление программе. Чтобы уведомить программу о завершении потока, можно из него послать user-defined message.


Digitman   (2005-02-04 13:46:00) [11]


> msguns ©   (04.02.05 13:39) [6]



> Видимо, речь идет


"видимо", "не видимо" ..

слушай, я не телепат.


msguns   (2005-02-04 13:39:00) [12]

>Digitman ©   (04.02.05 13:12) [3]

Скорее всего, он выразился некорректно (неправильно). Видимо, речь идет о посылке сообщения длл-ке  при обработке некоторого события. Хотя мне тоже непонятно, как можно послать сообщение длл-ке ? Ведь это же просто проца из либа, а не объект, способный "принять" это сообщение.


wl   (2005-02-04 13:29:00) [13]

Мне кажется речь идёт о Window Messages.

С помощью export-функции передаешь Handleокна( которое будет обрабатывать сообщения) в dll, а уже из dll вызываешь SendMessage( Handle, WM_USER+..., ..., ...);

конечно можно его послать и по broadcast, но насколько я помню(давно было) события не всегда приходили - скорее всего какие-то ошибки в параметрах


JK   (2005-02-04 13:19:00) [14]

Можно при каком-то событии выполнить функцию из DLL.
Это ты хотел?


Digitman   (2005-02-04 13:12:00) [15]


> JaoDa   (04.02.05 13:07) [2]


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

ну нельзя ! понимаешь, не-ль-зя передать "событие" откуда бы то ни было куда бы то ни было !

можно передать ИНФОРМАЦИЮ !!


JaoDa   (2005-02-04 13:07:00) [16]

я так и думал :((((


Digitman   (2005-02-04 13:04:00) [17]


> можно ли передать событие


нельзя.
не "из DLL-ки в основную программу", ни наоборот.

событие - это просто некий факт.
факт - понятие абстрактное, факт нельзя ни принять не передать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо