【发布时间】:2019-12-06 04:39:36
【问题描述】:
这不是建议问题的重复。我的问题是:“我不是在问如何编写代码。代码有效。”+“ 如果这个 SHELLDLL_DefView 基本上是桌面窗口,因此我应该接受应该避免使用小工具功能,或者如果这有点不同并且可以使用。" 编辑结束强>。
根据Cody Gary 和Raymond Chen 的说法,使用桌面窗口通常是个坏主意。这似乎也是Hans Passant的观点。
不幸的是,桌面小工具已被淘汰,因此实现其功能的唯一方法是使用 code such as this,它依赖于将 SHELLDLL_DefView 设置为窗口的父级。
由于我自己不够了解,我想知道是否有人可以告诉我这个SHELLDLL_DefView 是否基本上是桌面窗口,因此我应该接受应该避免使用小工具功能,或者这是否有点不同,可以使用。
我不是在问如何编写代码。该代码有效。我只是想知道它是否安全,或者它是否可能在路上造成麻烦。
(我的代码在 C#-WPF 中,但它与 Win32 互操作,所以我也用 C++ 标记它,因为 C++ 开发人员最有可能知道这一点。)
【问题讨论】:
-
10 多年来,我一直在做类似的 hack(但不是这个),从那时起 WIN32 API 似乎一直很稳定。虽然不能保证,但在整个测试过程中总是需要它;-)
-
@Stefan 谢谢。但我特别担心这个。如果我正在做的事情真的是这些人所警告的(这是我的问题),我可能只需要避免它。
-
在不属于您的窗口上调用 SetParent 永远不会安全。有时它只是碰巧起作用。
-
骗子的标记答案完全回答了你的问题。
标签: c# c++ winapi com-interop