将现有的Winform HWND替换为另一个?

时间:2010-02-18 18:03:01

标签: c# winforms winapi handle systray

我正在尝试劫持现有窗口并将其替换为我拥有的Winforms的内容。 我认为将表格的内部句柄与我想要覆盖的句柄交换是非常酷的,并且想知道是否有人尝试过它?

干杯, 弗洛里安

1 个答案:

答案 0 :(得分:0)

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

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

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

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