【问题标题】:Is there a way to have a process created by CreateProcess open within another window?有没有办法让 CreateProcess 创建的进程在另一个窗口中打开?
【发布时间】:2011-04-16 01:41:16
【问题描述】:

我希望能够在主进程中使用 CreateProcess 打开 GUI 应用程序,并将 GUI 显示在我从主进程中创建的窗口中。有谁知道如何实现这一目标?谢谢!

【问题讨论】:

    标签: c++ winapi createprocess win32-process


    【解决方案1】:

    如果您可以控制这两个应用程序,那么可以。

    这是屏幕保护程序在屏幕保护程序控制面板中的显示方式 - 控制面板通过命令行上的对话框窗口,.scr 文件 - 只是一个简单的 exe - 使用给定的子窗口创建其窗口hwnd 作为其父级。

    但是,不很好地支持捕获以前编写的顶级窗口并强制它存在于您自己的框架中。

    同样,您可以轻松尝试:我编写了一个测试应用程序,该应用程序创建了一个空框架窗口,为记事本副本创建了一个 FindWindow,并将记事本窗口重新设置为我框架的子级。

    所以它确实有效:至少在这个简单的场景中,但不能保证:修改自己的框架样式的更复杂的应用程序很可能会崩溃,另外在不同的线程上有一个子窗口和父窗口引入了以下可能性死锁。

    【讨论】:

    • 谢谢克里斯。这很有帮助。
    【解决方案2】:

    不,你不能这样做。

    一些可行的方法...不过,您可以启动该过程,然后使用窗口句柄对窗口进行一系列更改以取下框架。然后,您可以将其移动到窗口中其他一些放置控件的位置,当您有移动/调整大小事件时,您还可以调整此子窗口的大小。

    【讨论】:

    • 谢谢布赖恩。我会试试你的建议。
    • 我编写了一个测试应用程序,它执行 FindWindow 来查找记事本,然后使用 SetParent 将它作为我框架的子项作为父项。它起作用了——记事本窗口成为我框架窗口的一个功能子窗口。
    猜你喜欢
    • 2014-09-04
    • 2021-08-24
    • 1970-01-01
    • 2012-04-18
    • 2022-10-14
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多