Как убрать "подвешивание" вызывающего приложения при передаче SendMessage(WM_COPYDATA)? - VB

Узнай цену своей работы

Формулировка задачи:

Расскажу о проблеммке на примере:
Клиент исполняет код:
Смысл кода:
Команда - набрать номер (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
---
продолжение процесса

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы