Текущий архив: 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.48 MB
Время: 0.032 c