Как передать стркутуру через SendMessage

Тема в разделе "WASM.WIN32", создана пользователем John_T, 22 июл 2009.

  1. John_T

    John_T New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2009
    Сообщения:
    26
    Вот http://www.tdoc.ru/c/programming/win32/win32-windows-struct-msg-page18.htmlтут я нашел описание метода, но на практике добиться этого немогую
    Есть некая структура типа Record. мне необходимо передать ее в другое приложение, а в том соответственно получить. Подскажите пожалуйста как это сделать.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    www.google.ru

    Если сообщения так трудны можно заюзать MMF.
     
  3. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    John_T
    WM_COPYDATA
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    John_T
    1) Резервируешь память под COPYDATASTRUCT (можно в сегменте данных, т.е. статически, можно динамически, т.е. в стеке или попросить у ОС) для win32 ее размер 12 байт.
    2) В поле COPYDATASTRUCT.dwData пишеш что-то уникальное, чтобы принимающее окно идентифицировало твое сообщение.
    3) Резервируешь место под передаваемые данные (можно в сегменте данных, т.е. статически, можно динамически, т.е. в стеке или попросить у ОС).
    4) Размер этих данных (в байтах) помещаешь в поле COPYDATASTRUCT.cbData .
    5) Адрес п.3. помещаешь в COPYDATASTRUCT.lpData.
    6) Вызываешь SendMessage, в качестве четвертого параметра указывая адрес п1.

    прим.
    1) отправляющая программа обязана оставлять "живыми" и нетронутыми области п.1 и п.3 пока управление в нее не вернулась из SendMessage;
    2) если принимающая программа хочет обращаться к принятым данным после обработки WM_COPYDATA, она должна сделать себе их (данных) копию, т.е. поместить их в свое адресное пространство.