Как получить строку из запроса SendMessage (внешнего exe) в переполнении стека

У меня есть два исполняемых файла. Я хочу использовать один, чтобы получить строку от другого. Другими словами, я хочу сделать InterProcess Communication.
Я старался Отправить сообщение используя (Символ *) LPARAM в WndProc. Тем не менее, это не работает. (Символ *) LPARAM делает ошибку во время выполнения.
Вот часть моего кода:

отправитель SendMessage:

string s="12345";
SendMessage(hwnd,M_WR_SHELL,0,(LPARAM)s.c_str());

получатель SendMessage (в WndProc):

case M_WR_SHELL: {
string s;
s=(char*)lParam;
MessageBox(NULL, s.c_str(),"THAT'S GOOD'",MB_OK);
return 0;
}

Я искал вопрос. Некоторые ответы звучат так: «Они не разделяют одно и то же пространство памяти». Однако я не знаю, как с этим бороться.
При использовании Отправить сообщение не правильно, как я могу это сделать?

PS: я использую TDM-GCC и не хочу использовать MFC и даже VC ++. Если возможно, пожалуйста, не давайте мне решения через них. ;п

Спасибо,
В. Се

-2

Решение

Вам необходимо использовать разделяемую память. Я рекомендую использовать WM_COPYDATA вместо пользовательского сообщения. WM_COPYDATA можно отправить только через SendMessage () или SendMessageTimeout (), и Windows позаботится о копировании данных в адресное пространство процесса получения.

0

Другие решения

Вы должны использовать WM_COPYDATA (самый простой) или общую память через функции отображения файлов.
Мой собственный USM может помочь, но, как правило, вам нужно больше времени уделять механизмам IPC, поскольку вы, похоже, пришли из другой ОС (отсюда и примечание о Visual Studio). IPC в Windows не простая задача.

0

По вопросам рекламы [email protected]