C#应用程序中的C ++ .exe用于实时摄像机流

时间:2019-07-09 09:08:40

标签: c# c++ wpf dll

我想在C#WPF应用程序GUI中打开多个C ++ .exe应用程序,以显示来自多个IP摄像机的多个实时视频流。

我尝试研究Interops,但找不到适合我的示例。

我的目标是将.exe加载到没有窗口边框,关闭按钮等的C#WPF应用程序GUI中,并将其固定在一个位置。

1 个答案:

答案 0 :(得分:0)

从技术上讲,Windows GUI在各个进程之间都可以正常工作。

更改C ++应用程序,使其接收诸如ownerHwnd=0FE321之类的命令行参数,并在窗口句柄的子代传递该参数时设置新的视频窗口。

更改WPF应用,使其创建HwndHost每个摄像机一个可能是最简单的一个。或者,您可以为每个应用程序使用一个,然后在该窗口上放置多个视频流。启动流时,将HwndHost的窗口句柄传递给C ++应用。编写代码以处理调整大小。不要忘记听Exited事件并以某种方式做出反应。

棘手的部分是这些过程之间的IPC。您无法调用函数,也存在线程问题,例如输入焦点(如果您的视频渲染器不需要用户输入,就可以了)。对于这种情况,一种很好的IPC策略是发送/发布/响应自定义Windows消息。使用单个导出函数将C ++项目更改为DLL可以帮助实现这一点,但要以稳定性为代价。