Как убрать "подвешивание" вызывающего приложения при передаче SendMessage(WM_COPYDATA)? - VB
Формулировка задачи:
Расскажу о проблеммке на примере:
Клиент исполняет код:
Команда - набрать номер (cds.dwData = 7)
Параметр - собственно телефонный номер (cds.lpData = адрес памяти откуда его читать)
(cds.cbData -длина номера, включая \0)
Сервер выполняет команду, грубо вот так:
Проблемка:
SetupCall может выполняться при плохой связи с SIP узлом несколько секунд,
а если не дай бог там ошибка в настройках и указанного SIP узла не существует,
то ошибки можно ждать и пару десятков секунд.
То что ВЫЗЫВАЕМОЕ приложение подвешено - с этим здесь приходится мириться.
Но то что подвешено ВЫЗЫВАЮЩЕЕ - непорядок.
Т.е. я нажал на кнопку на Toolbar в ВЫЗЫВАЮЩЕМ приложении - она у меня остается нажатой.
14517814
А вот не работает PostMessage. И google говорит что это так и есть, то бишь WM_COPYDATA и PostMessage несовместимы.
От вызывающего приложения требуется тупо сообщить вызываемому номер телефона,
на что уходит миллисекунда.
Вызывающее приложение не интересует удалось ли инициировать вызов по этому номеру или нет и прочие подробности.
Клиент исполняет код:
Смысл кода:
Команда - набрать номер (cds.dwData = 7)
Параметр - собственно телефонный номер (cds.lpData = адрес памяти откуда его читать)
(cds.cbData -длина номера, включая \0)
Сервер выполняет команду, грубо вот так:
Проблемка:
пока
ElseIf cds.dwData = 7 Thenне отработает
, т.е. SetupCall не будет выполненаВЫЗЫВАЮЩЕЕ приложение будет также висеть
.SetupCall может выполняться при плохой связи с SIP узлом несколько секунд,
а если не дай бог там ошибка в настройках и указанного SIP узла не существует,
то ошибки можно ждать и пару десятков секунд.
То что ВЫЗЫВАЕМОЕ приложение подвешено - с этим здесь приходится мириться.
Но то что подвешено ВЫЗЫВАЮЩЕЕ - непорядок.
Т.е. я нажал на кнопку на Toolbar в ВЫЗЫВАЮЩЕМ приложении - она у меня остается нажатой.
Как бороться?
14517814
А вот не работает PostMessage. И google говорит что это так и есть, то бишь WM_COPYDATA и PostMessage несовместимы.
От вызывающего приложения требуется тупо сообщить вызываемому номер телефона,
на что уходит миллисекунда.
Вызывающее приложение не интересует удалось ли инициировать вызов по этому номеру или нет и прочие подробности.
Решение задачи: «Как убрать "подвешивание" вызывающего приложения при передаче SendMessage(WM_COPYDATA)?»
textual
Листинг программы
процесс --- SendMessage (WM_COPYDATA) -> <- возврат результата SendMessage из VB --- продолжение процесса
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д