зависит от задачи, но по моему все равно можно свести к передаче массива байтов или других базовых типов (uint / ulong), главное чтобы в структуре не было динамических массивов - т.е. чтобы размер был известен и не менялся
//+------------------------------------------------------------------+ struct s { int i; bool b; }; //+------------------------------------------------------------------+ union s_uchar { unsigned char arr[5]; //sizeof(s) = 5 s result; }; //+------------------------------------------------------------------+ void OnStart() { s_uchar tst; tst.result.b = true; tst.result.i = 31415926; ArrayPrint(tst.arr); tst.result.b = false; ArrayPrint(tst.arr); } //+------------------------------------------------------------------+
зависит от задачи, но по моему все равно можно свести к передаче массива байтов или других базовых типов (uint / ulong), главное чтобы в структуре не было динамических массивов - т.е. чтобы размер был известен и не менялся
PostMessage - Сообщение другому приложению
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-postmessagea

- 2018.12.05
- windows-sdk-content
- docs.microsoft.com

- 2018.05.31
- knicholasa
- docs.microsoft.com
А бдет ли работать в PostMessage, ведь PostMessage не ждет ответа,
следовательно указатель на структуру "потеряется" или нет?
Добавлено
Remarks The data being passed must not contain pointers or other references to objects not accessible to the application receiving the data. While this message is being sent, the referenced data must not be changed by another thread of the sending process. The receiving application should consider the data read-only. The lParam parameter is valid only during the processing of the message. The receiving application should not free the memory referenced by lParam. If the receiving application must access the data after SendMessage returns, it must copy the data into a local buffer.
Добавлено
https://docs.microsoft.com/en-us/windows/win32/dataxchg/wm-copydata

- 2018.05.31
- knicholasa
- docs.microsoft.com
А бдет ли работать в PostMessage, ведь PostMessage не ждет ответа,
следовательно указатель на структуру "потеряется" или нет?
читайте, разбирайтесь. WM_COPYDATA используется для IPC, там априори нельзя указатели передавать, для передачи используется специальная структура.
Второй вариант через HGLOBAL
Это если реально в другое приложение.
Если процесс тот же, банальный указатель и простые инструменты синхронизации легко решают проблему.
Только заполнить массив должного объёма данными по формату структуры. Получить указатель на структуру в мкл нельзя. Т.к. функция асинхронная, массив должен быть static (или в глобальной области видимости). Опасное это дело, т.к. запросто можно вызвать ф-цию несколько раз, а целевое окно ещё не успело подхватить предыдущие из очереди сообщений. Если требуется передавать динамические данные, можно попробовать SendMessageTimeoutW.
ЗЫ GlobalAlloc уже давным-давно, со времен появления Win32, полностью аналогична LocalAlloc и не может использоваться для
межпроцессных коммуникаций.
ЗЫ GlobalAlloc уже давным-давно, со времен появления Win32, полностью аналогична LocalAlloc и не может использоваться для
межпроцессных коммуникаций.
Да, вы правы, этот способ давно устарел. мой недосмотр

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет!
Кто-нибудь делал? (MQL5)