Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Передача события из dll   Найти похожие ветки 

 
JaoDa   (2005-02-04 12:59) [0]

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


 
Digitman ©   (2005-02-04 13:04) [1]


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


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

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


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

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


 
Digitman ©   (2005-02-04 13:12) [3]


> JaoDa   (04.02.05 13:07) [2]


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

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

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


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

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


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

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

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

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


 
msguns ©   (2005-02-04 13:39) [6]

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

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


 
Digitman ©   (2005-02-04 13:46) [7]


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



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


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

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


 
wl ©   (2005-02-04 13:46) [8]

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


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

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


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


 
Eraser ©   (2005-02-04 14:01) [10]

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


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


 
Digitman ©   (2005-02-04 14:02) [11]


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


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


 
wl ©   (2005-02-04 14:06) [12]

Digitman ©   (04.02.05 14:02) [11]

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


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

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

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

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

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

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

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

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

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


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

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

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

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

Не-а. RTFM


 
Eraser ©   (2005-02-04 20:44) [15]

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

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


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

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

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.035 c
11-1091910024
=Sniper=
2004-08-08 00:20
2005.02.20
Вылетаю на строчке form1.TabControl1_Tab0.Caption := Smth"


14-1107312286
Думкин
2005-02-02 05:44
2005.02.20
С Днем рождения! 2 февраля


1-1107449489
Muhan
2005-02-03 19:51
2005.02.20
Как проверить существует ли файл?


14-1106799267
КаПиБаРа
2005-01-27 07:14
2005.02.20
Самая серьезная ошибка в программе?


1-1107852549
Denis
2005-02-08 11:49
2005.02.20
Как проскроллить RichEdit до выделеного участка текста?