代码之家  ›  专栏  ›  技术社区  ›  Florian Doyon

是否用另一个Winform HWND替换现有Winform HWND?

  •  0
  • Florian Doyon  · 技术社区  · 16 年前

    我试图劫持一个现有窗口,并用我拥有的Winforms的内容替换它。 我想,将表单的内部句柄与我想要覆盖的句柄交换会非常酷,我想知道是否有人尝试过它?

    干杯 弗洛里安

    1 回复  |  直到 16 年前
        1
  •  0
  •   John Knoeller    16 年前

    如果您在要替换的窗口的进程和线程中执行,那么这应该很容易尝试。如果您没有在原始窗口的进程和线程上运行,那么它就不太可能工作。如果这是您试图替换的Windows shell的一部分,那么它是 非常 你不太可能让它工作。

    如果可以进行窗口替换,则必须以期望原始子窗口响应的方式响应父窗口,但您可能已经考虑过了。

    如果父窗口持有原始子窗口的窗口句柄,则替换它的尝试将失败(它仍将尝试与原始句柄对话)。但是,如果它通过id跟踪子窗口,那么您所要做的就是为您的窗口提供相同的窗口id,并使用SetWindowPos为其提供与原始子窗口相同的大小、位置和z顺序,然后销毁原始子窗口。

    我祝你好运,这是一种高风险的行为,但你可以尝试的所有其他黑客也一样,比如子类化和挂钩。