1

我有一个我想坚持在桌面上的应用程序。坚持桌面意味着每次有人单击 windows+D 或显示桌面图标时,桌面上都会出现应用程序。

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

我们通过使用 winAPI 方法 SetParent (this .Handle, FindWindow ( "Progman " , null )); 将应用程序的父级设置为桌面来设法在 XP 上做到这一点。

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

客户端基于 .NET 3.0 和 WPF 。

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

4

1 回答 1

0

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

public void SetFormOnDesktop(IntPtr hwnd) {  
IntPtr hwndf = hwnd;  
IntPtr hwndParent = FindWindow("ProgMan", null);  
SetParent(hwndf, hwndParent);  
}
于 2010-05-05T06:26:23.360 回答