@ProCxx

Страница 2467 из 2477
Pawel
25.10.2018
09:13:49
Мне кажется, у тебя немножко каша в голове по поводу "синхронный/асинхронный". Если ты что-то вызываешь, и чтобы получить результат, тебе не надо ждать специально, а вызов СРАЗУ даст тебе результат, это -- синхронный вызов. Так работает SendMessageXXX. Если ты что-то вызываешь, а потом другим вызовом тебе придёт результат -- это Асинхронный вызов. Так организован PostMessage.
это всё понятно. Я имел ввиду не синхронный обмен сообщениями, а синхронный обмен данными - получил запрос, синхронно отправил ответ. В данный момент у меня это на пайпах реализовано, но вот решил на сообщениях сделать, посколку это показалось мне проще. И в тех ситуациях, когда "клиенту" не надо дожидаться ответа от "сервера", всё прекрасно работает

Pawel
25.10.2018
09:20:40
Скажи лучше, каков результат обработки первого сообщения в сервере, процессе A ? Тип, размер данных.
тип - строка с жсоном, размер соотв. динамический. Передаётся в COPYDATASTRUCT

Google
Ilia
25.10.2018
09:21:39
тип - строка с жсоном, размер соотв. динамический. Передаётся в COPYDATASTRUCT
Ну, вот, чтобы её передать обратно, надо маршалить в другой процесс. В его память. А никак. Так что невозможно это организовать строго синхронно, этот обмен

Pawel
25.10.2018
09:24:44
В json что?
Да всякая специфичсекая фигня {"Command":"подвинуть кнопку с именем Button1 на 2 пикселя вправо, что-то в этом роде"}

Pawel
25.10.2018
09:26:02
О. Названия методов и аргументы. Лучше сразу в DCOM.
спасибо, а то я не настоящий сварщик. гляну.

Vyacheslav
25.10.2018
09:27:30
строго говоря протокол - jsonrpc2
Можно ещё на TCP сокетах реализовать, но лучше сразу в DCOM.

Можно ещё на TCP сокетах реализовать, но лучше сразу в DCOM.
В шаблонах студии должны быть шаблоны сервера и клиента. На IDL языке нужно будет описать интерфейсы взаимодействия. У меня где-то был рабочий пример, но сходу не найду. Есть 2 вида серверов, которые выполняются в exe -- с библиотекой типов и без. С библиотекой типов будет меньше кода, но чуть сложнее писать, т.к. нужна реализация IDispatch.

Vyacheslav
25.10.2018
09:34:14
Без библиотеки типов создаётся отдельная dll stub/proxy, исходные файлы для которой автоматически генерируются из idl описания.

Ilia
25.10.2018
09:34:51
Можно ещё на TCP сокетах реализовать, но лучше сразу в DCOM.
Я бы вот не связывался с этим говном. DCOM имею в виду.

Vyacheslav
25.10.2018
09:34:53
Эта dll должна быть рядом с сервером и клиентом. Тогда заморачиваться с IDispatch не придется.

Google
Vyacheslav
25.10.2018
09:35:26
Я бы вот не связывался с этим говном. DCOM имею в виду.
Сколько раз ты его использовал? Так, чтоб работало?

Ilia
25.10.2018
09:36:02
Лучше сразу сюда пиши @supapro
Не надо такие вопросы в СУПУ. Там изучают язык С++, а не вопросы его применения.

Vyacheslav
25.10.2018
09:37:38
Лучше сразу сюда пиши @supapro
@bertolu4i ^ это сообщение не тебе

Ilia
25.10.2018
09:37:56
@bertolu4i ^ это сообщение не тебе
Да всё равно, кому оно

Vyacheslav
25.10.2018
09:38:08
Pawel
25.10.2018
09:38:35
Парень хочет JSONRPC. Ты его тянешь в DCOM... Ну ... блин... ФЕЕРИЧНО!
чес гря у меня на пайпах код и так довольно простой, но хотелось бы его ещё сильнее упростить и добавить гибкости. А не усложнить)

Vyacheslav
25.10.2018
09:39:23
(да нет же, не ноль :( )
Так ноль или не ноль?

Vyacheslav
25.10.2018
09:41:30
чес гря у меня на пайпах код и так довольно простой, но хотелось бы его ещё сильнее упростить и добавить гибкости. А не усложнить)
Гибкости добавит DCOM (уберет прослойку сериализации jsonrpc). Быстрое решение - переход от пайпов к tcp/ip взаимодействию. Или к именованным пайпам. Именованные пайпы будут ненадежны, если клиентов > 1

Alexey
25.10.2018
09:42:31
Ребята , может подскажите , вообщем есть библиотека OpenCV (С++), в своем приложени вызываю функцию из этой либы, на пример приминение фильтра к изображению, пока происходит обрабтка , ни какой отзывчивости у приложения, кто нибудть может подсказать , как можно при думать, отображение прогресса? это только можно сделать добавлением кода в исходники OpenCV ?

Ilia
25.10.2018
09:42:46
Где я что перепутал?
ну typelibrary нужна не только лишь для IDispatch...

Vyacheslav
25.10.2018
09:42:56
Google
yuri
25.10.2018
09:43:14
Ну и отсавайся на пайпах или лучше TCP
Что может быть лучше TCP/IP? TCP-over-UDP!

Ilia
25.10.2018
09:43:43
Ты точно в DCOM разбираешься?
НЕТ ! НЕ РАЗБИРАЮСЬ И НЕ ХОЧУ!

Vyacheslav
25.10.2018
09:43:57
НЕТ ! НЕ РАЗБИРАЮСЬ И НЕ ХОЧУ!
Ну так зачем орёшь тогда?

Alexander
25.10.2018
09:44:14
Ну так зачем орёшь тогда?
он просто не совсем адекватен

Ilia
25.10.2018
09:44:51
Да, я неадекватен, когда людям в 21ов веке рекомендуют перейти на DCOM....

Constantine
25.10.2018
09:46:34
он просто не совсем адекватен
ты зря кстати, Илья жестковато, но обычно по делу)

Vyacheslav
25.10.2018
09:47:55
ну typelibrary нужна не только лишь для IDispatch...
Автоматные сервера (и шаблоны в студии для них) реализуют IDispatch. Это главное отличие в этих шаьлонах, и это нужно учитывать. То, что такие сервера компилят .tlb файл автоматически и регистрируют его в системе - это вторично. А так я неавтоматный плюсовый COM сервер, например из Delphi могу использовать. То, что VB умеет общаться только с автоматными серверами - это его проблема. C#, кстати, тоже умеет обходиться без библиотеки типов.

Sergey
25.10.2018
09:48:11
Да, я неадекватен, когда людям в 21ов веке рекомендуют перейти на DCOM....
Вот мне тоже показалось, что это говно мамонта. Когда-то делал, сейчас даже вспоминать не хочу.

Ilia
25.10.2018
09:48:13
НЕ ну уж лушче Google Protobuf взять...

Но с учётом того, что у парня JSON...

Vyacheslav
25.10.2018
09:48:51
Да, я неадекватен, когда людям в 21ов веке рекомендуют перейти на DCOM....
Следуя твоей логике, давайте выкинем физику, т.к. она очень старая. То, что в винде вечно устареть не может.

Anatoly
25.10.2018
09:48:56
НЕ ну уж лушче Google Protobuf взять...
Да ладно, Ильюха, вся офисная автоматизация на COM-e

Ilia
25.10.2018
09:49:24
Ну или его, да.

В общем, я всё.

Constantine
25.10.2018
09:49:50
Я что читаю какие-то буквы, смотрю на DCOM и представляю себе, что я буду кросспрограммное средство типа COM использовать для собственных клиент-серверов...

Sergey
25.10.2018
09:49:50
Мне кажется, если чел имел опыт с всей этой машинерией, то это одно. Если это будет первый опыт, то может и не надо.

Google
Constantine
25.10.2018
09:51:15
Никто не говорил о кроссплатформенности.
Я про то, что COM технология для работы с аппликухами которые вообще совсем не ваши, и там вечно п*ц какой-то

Vyacheslav
25.10.2018
09:51:23
Нужны современные средства - добро пожаловать в Rest API, gRPC и прочие новые проекты

Anatoly
25.10.2018
09:52:13
Я про то, что COM технология для работы с аппликухами которые вообще совсем не ваши, и там вечно п*ц какой-то
да, с этим согласен, с каждой новой версией офиса у нас парень, поддерживающий интеграцию с офисом, умывается кровавыми слезами.

Vyacheslav
25.10.2018
09:52:23
Я про то, что COM технология для работы с аппликухами которые вообще совсем не ваши, и там вечно п*ц какой-то
Если понять, как COM работает, "п*ц" превращается в простой код. Просто его много на с++

Constantine
25.10.2018
09:53:04
Если понять, как COM работает, "п*ц" превращается в простой код. Просто его много на с++
А если вам надо интерфейс отозвать потому что связанная сущность сдохла а номинальная COM апиха вам такого не предлагает?

Anatoly
25.10.2018
09:53:12
Vyacheslav
25.10.2018
09:53:34
Anatoly
25.10.2018
09:53:42
Vyacheslav
25.10.2018
09:54:17
Constantine
25.10.2018
09:54:46
В чем сложность? Вернуть E_NOTIMPLEMENTED при запросе интерфейса сущности, например.
Вы не поняли. У вас у сущности забрали интерфейс и держат, а сущность с вашей стороны сдохла

Vyacheslav
25.10.2018
09:56:27
Вы не поняли. У вас у сущности забрали интерфейс и держат, а сущность с вашей стороны сдохла
Так нельзя в com. Если счётчик ссылок > 0, сущность должна жить. Или должен жить переходник, который будет проверять существование сдыхающей сущности и после этого на все вызовы методов возвращать исключения.

Если сдох СОМ сервер, то COM сам это будет делать на стороне клиента

Vyacheslav
25.10.2018
09:58:05
Вот про переходник это как раз то, что вы пишете
А что это за архитектура, где сущности сдыхают сами по себе?

Constantine
25.10.2018
09:58:15
Vyacheslav
25.10.2018
09:58:27
Это даже не переходник, это костыль получается

Диалог пользователем закрыт
Диалоговое окно существует до вызова CloseHandle, даже после своего визуального закрытия

Google
Constantine
25.10.2018
09:59:34
Диалоговое окно существует до вызова CloseHandle, даже после своего визуального закрытия
Если вы будете продлевать жизнь сущности "диалог" вы обвешиваетесь костылями на все события диалога

Constantine
25.10.2018
10:00:52
Диалоговое окно существует до вызова CloseHandle, даже после своего визуального закрытия
Представьте что у вас в диалоге остался незакрытый future, а он уже свой MessageLoop вырубил

Vyacheslav
25.10.2018
10:01:13
Даже std::thread является полудохлой сущностью, если исполняемый поток завершился.

Представьте что у вас в диалоге остался незакрытый future, а он уже свой MessageLoop вырубил
MessageLoop в COM сервере работает всегда, пока работает COM сервер.

Constantine
25.10.2018
10:02:24
MessageLoop в COM сервере работает всегда, пока работает COM сервер.
MessageLoop в менюшке, например, свой, особенный и очень специфический

Vyacheslav
25.10.2018
10:02:56
И в одном потоке. Создавать его в другом потоке только приводит к путанице, но возможно. Сама сушность "диалог" (handle) может жить и без message loop

Страница 2467 из 2477