在 Vista 上将应用程序粘贴到桌面
Posted
技术标签:
【中文标题】在 Vista 上将应用程序粘贴到桌面【英文标题】:Stick application to the Desktop on Vista 【发布时间】:2009-09-03 08:52:45 【问题描述】:我有一个应用程序要固定在桌面上。坚持桌面意味着每次有人单击 windows+D 或显示桌面图标时,桌面都会出现应用程序。
用户可以在桌面上定位应用程序并随时更改位置,但它始终保留在桌面上。
我们在 XP 上通过使用 winAPI 方法 SetParent (this .Handle, FindWindow ( "Progman " , null )) 将应用程序的父级设置为桌面来设法做到这一点。
在 Vista 上,我们设法将其固定在桌面上,只要桌面获得焦点,它就会在我们的窗口周围绘制灰色背景。当我的窗口移动时,这个背景不会消失,在桌面上留下难看的方块。当我单击 Windows+D 时,它们都消失了。 请注意,这在 XP 上根本不会发生。
客户端基于.NET 3.0和WPF。
知道为什么会发生这种情况以及如何解决吗?
【问题讨论】:
【参考方案1】:使用以下代码并在表单加载时将窗口句柄传递给函数希望这可以完全解决您的问题
public void SetFormOnDesktop(IntPtr hwnd)
IntPtr hwndf = hwnd;
IntPtr hwndParent = FindWindow("ProgMan", null);
SetParent(hwndf, hwndParent);
【讨论】:
以上是关于在 Vista 上将应用程序粘贴到桌面的主要内容,如果未能解决你的问题,请参考以下文章