Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

Передача события из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.045 c
3-1106139806
ESA
2005-01-19 16:03
2005.02.20
Лучший Chart?


4-1105108052
!
2005-01-07 17:27
2005.02.20
ListBox


4-1104417010
Katy
2004-12-30 17:30
2005.02.20
"Программа не отвечает", но она не виснет, вып незримые действия


1-1107339172
Imp
2005-02-02 13:12
2005.02.20
статья: Написание оптимального кода под Delphi


14-1107348880
Vlad Oshin
2005-02-02 15:54
2005.02.20
у кого нибудь компьютер W95 входит в домен W2000?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский