Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.024 c
14-1106650775
syte_ser78
2005-01-25 13:59
2005.02.20
Epson stylus Color 300


1-1107765058
Ega23
2005-02-07 11:30
2005.02.20
Опять приведение PChar к String


3-1106265319
ataker
2005-01-21 02:55
2005.02.20
Програмное создание поля Field в базе данных


1-1107773373
__oleg
2005-02-07 13:49
2005.02.20
В DLL не работает процедура со строковыми параметрами


1-1107807336
GGGG123123
2005-02-07 23:15
2005.02.20
Как узнать где находиться exe моей пргораммы при её работе?




   Наверх