Winapi 一扇窗户怎么可能是;钉住;到桌面表面?
这个问题更多的是学术性而不是实用性,并且不涉及任何一种特定的语言。为了便于讨论,我们将使用Win32 API 创建具有以下行为目标的窗口的最合适方法是什么:Winapi 一扇窗户怎么可能是;钉住;到桌面表面?,winapi,Winapi,这个问题更多的是学术性而不是实用性,并且不涉及任何一种特定的语言。为了便于讨论,我们将使用Win32 API 创建具有以下行为目标的窗口的最合适方法是什么: Z顺序低于除桌面外的其他所有窗口 无法通过单击鼠标或键盘使其显示在比其他窗口更高的z顺序上 可以假设窗口是无边界的。这里有两种基本方法:- 使您的窗口成为桌面的“子窗口” 使您的窗口仅拒绝接受焦点或激活:- windows窗口管理器的神奇之处在于没有一个。相反,由于系统中所有窗口的紧急行为(即它们对消息的反应),出现了一个窗口管理器的外
- Z顺序低于除桌面外的其他所有窗口
- 无法通过单击鼠标或键盘使其显示在比其他窗口更高的z顺序上
可以假设窗口是无边界的。这里有两种基本方法:-
WM_WINDOWPOSCHANGING
之类的消息,您可以确保您的窗口从未收到激活或焦点,并且始终设置z-bottom标志,即使其他应用程序调用SetWindowPos时也是如此
这两种方法都有问题,因为很难找出桌面窗口是什么。GetDesktopWindow返回只有在资源管理器崩溃时才可见的窗口句柄。其余时间,可见桌面是一个由资源管理器创建的窗口,最终是一个syslistview控件。Spy+++Findwindow将为您提供一个您希望位于上方的窗口的句柄