我有一个应用程序,我想坚持桌面。坚持桌面意味着每当有人点击windows + D或显示桌面图标时,桌面就会出现应用程序。
用户可以在桌面上找到应用程序并随时更改位置,但它始终保留在桌面上。
我们设法通过使用winAPI方法SetParent(此.Handle,FindWindow(“Progman”,null));将应用程序的父级设置为桌面,在XP上执行此操作。
在Vista上,我们设法将其粘贴到桌面上,只要桌面获得焦点,它就会在我们的窗口周围绘制灰色背景。移动窗口时,此背景不会消失,桌面上会留下丑陋的方块。当我点击Windows + D时,它们都消失了。 请注意,这根本不会发生在XP上。
客户端基于.NET 3.0和WPF。
知道它为什么会发生以及如何解决它?
答案 0 :(得分:0)
使用以下代码并将窗口句柄传递给函数,而表单加载希望完全解决您的问题
public void SetFormOnDesktop(IntPtr hwnd) {
IntPtr hwndf = hwnd;
IntPtr hwndParent = FindWindow("ProgMan", null);
SetParent(hwndf, hwndParent);
}