如何从一个Windows控制台应用程序向另一个发送消息?

dea*_*ana 5 c++ winapi ipc windows-messages

我有一个Windows控制台应用程序,可以启动子进程。如何向子进程发送消息?我发现了诸如PostMessage()/ PeekMessage()之类的函数-这是我所需要的,但据我了解,它在一个应用程序内使用,并使用HWND标识目标窗口(我在应用程序中没有窗口)。我也阅读了有关ipc的资料,例如,命名管道也需要HWND。我想要这样的东西:

[program 1]

int main()
{
    CreateProcess(.., processInfo);
    SendMessage(processId, message);
}

[program 2]

int main()
{
    while(1)
    {
//      do thw work
        Sleep(5 * 1000);
//      check message
        if(PeekMessage(message,..))
        {
        break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

子进程需要获得消息,它应该完成其工作,而不是立即终止,而是完成当前迭代。这就是为什么我不使用信号并且阻止“接收消息”也是不合适的原因。

Asa*_*saf 2

尝试创建一个仅消息窗口

这是一个仅用于发送和接收消息的窗口。HWND_MESSAGE您可以通过指定为窗口父级来创建它。