Вниз
Скачать: CL | DM;

Чем отличается PostMessage от SendMessage.   Найти похожие ветки 

 
IGORYOK ©   (2003-08-12 21:39) [0]

Чем отличается PostMessage от SendMessage. раньше я считал, что ни чем, но когда проверил оказалось одна (первая) передаёт между приложениями сообщения, а вторая нет. Так как же для чего они


 
jack128 ©   (2003-08-12 23:03) [1]

The SendMessage function sends the specified message to a window or windows. The function calls the window procedure for the specified window and does not return until the window procedure has processed the message. The PostMessage function, in contrast, posts a message to a thread"s message queue and returns immediately.


 
Yanis ©   (2003-08-12 23:11) [2]

А вот перевод, по сути одно и тоже:
http://delphimaster.net/view/7-1060709982/


 
jack128 ©   (2003-08-12 23:16) [3]


> Yanis © (12.08.03 23:11) [2]

Оригинал полезней!! -))


 
Yanis ©   (2003-08-12 23:22) [4]

To [3]
Не все же полиглоты, как ты или я. Я нехочу никого обидеть но не все смогут перевести. Хотя ты прав, оригинал есть оригинал.


 
Digitman ©   (2003-08-13 08:51) [5]


> когда проверил оказалось одна (первая) передаёт между приложениями
> сообщения, а вторая нет


ничего подобного
SendMessage() - синхронная передача сообщения, с ожиданием результата. Вызывающий кодовый поток блокируется на исполнении этой ф-ции до тех пор, пока не получит тот или иной результат : либо результат обработки сообщения оконной ф-цией в целевом кодовом потоке, либо отказ (целевое окно задано неверно, еще/уже не существует и т.п.) со значением результата = 0.

PostMessage() - асинхронная передача сообщения, без ожидания результата (возврат результата обработки сообщения целевой оконной ф-цией здесь не предусмотрен). Вызывающий код.поток не блокируется на исполнении ф-ции, получает управление сразу же после попытки постановки посылаемого сообщения в очередь сообщений целевого окна. Результат исполнения ф-ции = True, если сообщение успешно поставлено в целевую очередь, False - иначе.


 
Verg ©   (2003-08-13 09:05) [6]


> Digitman © (13.08.03 08:51) [5]


К этом можно добавить еще маленькую деталь:
sendmessage приводит к прямому вызову функции обработки сообщений целевого объекта, кроме случаев, когда поток отправляет сообщение (SendMessage) окну, которое ему не принадлежит (было создано другим потоком). В этом случае происходит как бы смешанный вариант (post-send)message, очередь сообщений ЦО переводится в специальное состояние, а вызывающий поток блокируется до тех пор, пока ЦО не обратится к своей очереди сообщений, в этот момент и происходит обработка того самого сообщения и происходит в контексте потока ЦО. На этом механизме и основан принцип синхронизации потоков наследников TThread из модуля classes, а именно метод synchronize.


 
Digitman ©   (2003-08-13 10:14) [7]


> Verg


мне это известно не хуже чем тебе)
рискни растолковать это автору)



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

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



Память: 0.46 MB
Время: 0.015 c
1-89252
Gawk
2003-10-14 16:43
2003.10.27
Как инсталировать сторонний компонент


6-89439
electric
2003-08-30 18:56
2003.10.27
почта FastNet


14-89544
Mystic
2003-10-08 12:42
2003.10.27
Забавный глюк :)


1-89342
ded_mazai
2003-10-16 13:48
2003.10.27
Express Quantum Tree List


7-89602
Borgir
2003-08-13 07:14
2003.10.27
местоположение папок Windows




   Наверх