Как передать строку между приложениями, используя SendMessage в C ++ - PullRequest
2 голосов
/ 09 февраля 2011

Можно ли передавать char * между двумя приложениями, используя пользовательское сообщение в SendMessage?Я знаю, что это возможно с помощью WM_COPYDATA, но я хочу знать, могу ли я отправить это с помощью специального сообщения (WM_USER + ..)

Спасибо!

Ответы [ 3 ]

7 голосов
/ 09 февраля 2011

WM_COPYDATA был специально придуман, потому что то, что вы просите, неосуществимо напрямую.Это потому, что разные приложения живут в разных адресных пространствах, поэтому указатель, переданный из приложения, не имеет смысла в другом.

WM_COPYDATA решает проблему, используя какой-то механизм IPC под капотом.обычно делают, когда вы хотите поделиться данными с другим приложением;Возможны обычные варианты: каналы, разделяемая память и другие, посмотрите здесь , чтобы увидеть, что предоставляет Windows.

2 голосов
/ 09 февраля 2011

Я почти уверен, что это невозможно.Другое приложение не сможет читать напрямую из указателя на кучу / стек первого приложения.

1 голос
/ 06 октября 2011

Здесь - хорошая статья, которая поможет вам в межпроцессном взаимодействии. Это было полезно для меня при отправке строки между двумя приложениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...