如何将自定义工具栏放置在Windows 7任务面板之前的任务栏上?有一个叫Pokki的流行应用可以做到这一点。

我想知道我怎样才能做到这一点?
Edit1:我需要一个100%的方式来访问一个自定义工具栏(DeskBand?)对于Windows7,我并不是在寻找一个图钉--一个应用程序解决方案,而是一种构建一个能够处理它自己的消息和显示它自己的图标的自定义解决方案的方法。C#方式是非常受欢迎的。
Edit2: WPF方式非常受欢迎。
发布于 2012-12-22 23:55:38
你会得到很多关于的建议,而不是在C#中做这件事。我不能推荐其他方式,你的桌面带不能工作的可能性很大。问题是CLR版本注入问题,一个进程(如explorer.exe)只能加载一个CLR版本。当版本错误时,您的deskband将无法工作。
在CLR4.0中添加了针对此问题的非常具体的对策,其.NET支持进程内并行版本的CLR。换句话说,在单个进程中加载了多个CLR。该功能适用于此特定方案,即需要CLR的COM服务器,因为它是用托管代码编写的。因此,一个绝对的要求是,您要编写针对.NET 4.0或更高版本的扩展。
但仍然存在一个遗留问题,也是Microsoft仍然不支持shell扩展的这种方案的核心原因。这是一个“谁先来”的问题。尽管有警告不要这样做,但仍然有使用托管代码和目标CLR版本2的shell扩展。如果这样的扩展在您的扩展之前加载,这是一个完全随机的事件,因为它取决于注册表中键的顺序,Explorer可能会首先加载CLR 2。这将阻止进程内并行功能工作,只有当CLR版本4首先加载时,它才能有一个好的结果。
这是完全无法诊断的,当扩展无法加载时,Explorer不会发出滴答声。而且对于普通用户来说是不可修复的,你不能指望他去修补晦涩难懂的注册表项。
这个问题需要很长时间才能完全解决。实际上,Windows需要停止支持.NET 4之前的.NET版本才能有保证。Windows8在开始时没有默认安装.NET 3.5,但它仍然使添加它变得非常容易。所以要花很多时间,十年或更长时间。
注意了,如果你不担心随机失败,你可以让它在C#中工作。接下来,您将被埋没在非常晦涩的COM接口细节中,在这些细节中幸存下来需要知道如何正确声明ComImport接口的黑带技能。这不是你应该自己解决的事情,这已经是别人做的了。我没有推荐产品的习惯,但我不能跳过推荐EZShellExtensions,这是一个专门为用C#编写shell扩展而设计的库。对deskbands的支持是其宣传的功能之一。使用试用版来修补这一点,看看是否能有一个好的结果。
发布于 2012-12-15 12:29:16
下面的示例可能会有所帮助:
http://www.codeproject.com/Articles/185512/Programmatically-PIN-shortcut-onto-Taskbar-on-Win7
https://stackoverflow.com/questions/13889290
复制相似问题