将Qt应用程序托管到另一个应用程序

时间:2014-11-21 12:40:38

标签: windows qt winapi

这是对outstanding question的跟进,其解决方案似乎是我必须使我的Qt应用程序成为另一个应用程序的子代,特别是具有输入焦点的活动窗口。我需要这样做,以便我的Qt应用程序自动具有输入焦点,而无需用户首先点击它。 (这是必要的,因为Qt应用程序是由后台进程启动的。)

我知道QWinWidget - "一个Qt小部件,它可以是本机Win32小部件的子代"。不幸的是,我的应用程序基于QMainWindow,没有明显的方法可以从QWinWidget派生。

1 个答案:

答案 0 :(得分:0)

解决方案似乎是我必须让我的Qt应用程序成为另一个应用程序的子项,特别是具有输入焦点的活动窗口 ...

类似的Win32解决方案,其他进程应用程序在自己的画布中捕获一些窗口通常由SetParent API调用驱动。这是one。它适用于我在Qt小部件中的其他进程渲染,但你需要反过来做它。你如何得到Qt窗口处理?好吧,对我来说,QWidget :: winId()甚至在Qt 5.3中工作,但我最近偶然发现了discussion并且有点困惑它是否总是有效。无论如何,你需要在你的Qt应用程序中get an active window之前获得它应该是窗口句柄的winId()。

P.S。 Olumide,请驳回我的初步评论。我想,反过来说,什么应用程序父母什么窗口,事实证明非Qt需要Qt。