我有3个简单的程序,每个都是一个简单的窗口。我将启动所有3个过程,然后单击程序1或2的按钮以显示程序3的窗口。
计划1& 2:只有1个按钮。单击时,显示程序3的隐藏进程(也是一个窗口)。
程序3:作为隐藏进程启动,它在弹出之前等待程序1和2的消息。根据按下按钮,窗口标题应更改为程序1或2的标题。
我不确定是什么函数或者我使用线程来做这个行为?我相信我需要使用某种线程来做到这一点。首先让程序3隐藏,然后等待程序1和2的消息..任何想法?
答案 0 :(得分:1)
由于您需要跨进程边界传递简单消息,因此我建议您在SendMessage系列中使用某些内容。您首先需要获取目标窗口的句柄。这个函数在窗口API中是相当低级的,所以你只能直接从C / C ++中获取它,但是你没有指定你使用的是什么语言,我认为有这个包装CLR的例程也可以通过C#访问。
答案 1 :(得分:1)
我建议使用Windows Event。特别是手动重置事件。你的程序3做了一个等待事件。当程序1或程序2想要唤醒窗口时,它会设置事件。当程序3返回隐藏状态时,它会清除该事件。
您可以使用SendMessage
或PostMessage
,但事件似乎更容易和直接。它也有一定的优势:
这不适合信号量。信号量通常用于同步对多个共享资源的访问。你想要的只是程序3等待通知,程序1或程序2能够发送通知。
如果您必须将数据从程序1传递到程序3,那么事件将无法帮助您这样做。在这种情况下,您将不得不提出一种通信方法,例如内存映射文件,管道,网络套接字......甚至是Windows消息。但对于简单的“嘿,醒醒!”通知,我会使用一个活动。