如何在Windows 7中的任务栏上放置我的自定义工具栏(DeskBand?)赢得WPF?

Art*_*tem 4 c# wpf winapi taskbar win32gui

如何在任务面板之前将自定义工具栏放在Windows 7的任务栏上?有一个名为Pokki的流行应用程序可以做到这一点. 在此输入图像描述 我想知道我该怎么做?

编辑1:我需要100%的方式来访问Windows 7的自定义工具栏(DeskBand?).我不是在寻找一个pin-an应用程序解决方案,而是一种构建自定义解决方案的方法,该解决方案能够处理它自己的消息并显示它的自己的图标.C#方式非常感谢.

Edit2:非常感谢WPF方式.

Han*_*ant 10

你会得到很多建议,为没有在C#中做到这一点.我不能建议,你的桌面带不能工作的几率很大.问题是CLR版本注入问题,一个进程(如explorer.exe)只能加载一个版本的CLR.如果版本错误,您的桌面带将无法正常工作.

在.NET 4.0中添加了针对此问题的非常具体的对策,其CLR支持CLR的进程内并行版本.换句话说,在一个进程中加载​​了多个CLR.该功能适用​​于此特定方案,即需要CLR的COM服务器,因为它是用托管代码编写的.因此绝对要求您编写针对.NET 4.0或更高版本的扩展.

但是仍然存在遗留问题,而且微软仍然不支持shell扩展的这种情况的核心原因.有一个"谁先来"的问题.尽管警告没有这样做,但有一些shell扩展使用托管代码和目标CLR版本2.如果这样的扩展你的之前加载,一个完全随机的事件,因为它取决于注册表中的键的顺序,资源管理器可能会首先加载CLR 2.这会阻止进程并行功能的工作,只有在首先加载CLR版本4时才能达到良好的目的.

这是完全不可识别的,当无法加载扩展时,资源管理器不会发出吱吱声.对普通用户来说无法修复,你不能指望他修补一些模糊的注册表项.

在完全解除这个问题之前需要花费很多时间.实际上,Windows需要在.NET 4之前停止支持.NET版本才能获得保证.Windows 8首先没有安装.NET 3.5,但它仍然可以很容易地添加它.所以要花很多时间,十年或更长时间.

那么,请注意风,如果你不担心随机故障,你可以使它在C#中工作.接下来你将被隐藏在非常模糊的COM接口细节中,幸存下来需要黑带技能,知道如何正确声明[ComImport]接口.这不是你应该自己解决的问题,而是由其他人完成的.我不习惯推荐产品,但不能跳过推荐EZShellExtensions,这是一个专门用于帮助在C#中编写shell扩展的库.支持deskband是其广告功能之一.使用试用版来修补它,看看你是否可以把它带到一个好的结局.