在Vista上将应用程序粘贴到桌面上

时间:2009-09-03 08:52:46

标签: c# .net desktop windows-vista dock

我有一个应用程序,我想坚持桌面。坚持桌面意味着每当有人点击windows + D或显示桌面图标时,桌面就会出现应用程序。

用户可以在桌面上找到应用程序并随时更改位置,但它始终保留在桌面上。

我们设法通过使用winAPI方法SetParent(此.Handle,FindWindow(“Progman”,null));将应用程序的父级设置为桌面,在XP上执行此操作。

在Vista上,我们设法将其粘贴到桌面上,只要桌面获得焦点,它就会在我们的窗口周围绘制灰色背景。移动窗口时,此背景不会消失,桌面上会留下丑陋的方块。当我点击Windows + D时,它们都消失了。 请注意,这根本不会发生在XP上。

客户端基于.NET 3.0和WPF。

知道它为什么会发生以及如何解决它?

1 个答案:

答案 0 :(得分:0)

使用以下代码并将窗口句柄传递给函数,而表单加载希望完全解决您的问题

public void SetFormOnDesktop(IntPtr hwnd) {  
IntPtr hwndf = hwnd;  
IntPtr hwndParent = FindWindow("ProgMan", null);  
SetParent(hwndf, hwndParent);  
}