如何从 C++ 中的 SendMessage 请求(外部 exe)获取字符串

How to get string from SendMessage request (of a external exe) in c++

我有两个可执行文件。我想用一个从另一个获取字符串。换句话说,我想做一个InterProcess Communication。
我尝试使用 SendMessage (char*)lParamWndProc 中。但是,它不起作用。 (char*)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;
}


我搜索了这个问题。有些回答像"They don't share the same memory space."但是,我不知道怎么处理。
如果使用SendMessage不合适,怎么办?

PS:我正在使用 TDM-GCC,不想使用 MFC,甚至 VC++。如果可能的话,请不要通过他们给我解决方案。 ;p

谢谢,
谢伟

您需要使用共享 memory.I 建议使用 WM_COPYDATA 而不是用户定义的消息。 WM_COPYDATA 只能通过 SendMessage() 或 SendMessageTimeout() 发送,Windows 将负责将数据复制到接收进程地址 space。

您必须使用 WM_COPYDATA(最简单)或通过 file mapping functions 共享内存。 我自己的 USM 可能会有所帮助,但通常您需要在 IPC 机制上投入更多时间,因为您似乎来自另一个 OS(因此关于 Visual Studio 的说明)。 Windows 中的 IPC 不是一项简单的任务。