- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何在 Windows 7 中将自定义工具栏放在任务面板之前的任务栏上?有一个名为 Pokki 的流行应用程序可以做到这一点。 我想知道我该怎么做?
Edit1:我需要一种 100% 的方式来访问 Windows 7 的自定义工具栏(DeskBand?)。我不是在寻找固定应用程序解决方案,而是一种构建能够处理自己的消息的自定义解决方案的方法并显示它自己的图标。非常感谢 C# 方式。
Edit2:非常感谢 WPF 方式。
最佳答案
在 C# 中,您会得到很多建议不要这样做。否则我无法推荐,您的办公 table 带无法正常工作的可能性很大。问题在于 CLR 版本注入(inject)问题,一个进程(如 explorer.exe)只能加载一个版本的 CLR。如果版本错误,您的桌面将无法使用。
.NET 4.0 中添加了针对此问题的非常具体的对策,其 CLR 支持 CLR 的进程内并行版本。换句话说,在单个进程中加载多个 CLR。该功能适用于这种特定情况,即需要 CLR 的 COM 服务器,因为它是用托管代码编写的。因此,绝对要求您编写面向 .NET 4.0 或更高版本的扩展。
但仍然存在一个遗留问题,也是微软仍然不支持 shell 扩展这种场景的核心原因。有一个“谁先来”的问题。尽管有不要这样做的警告,但仍有使用托管代码和 objective-c LR 版本 2 的 shell 扩展。如果这样的扩展在你之前被加载,这是一个完全随机的事件,因为它取决于顺序注册表中的键,Explorer 可能首先加载 CLR 2。这会阻止进程内并排功能发挥作用,只有在首先加载 CLR 版本 4 时才会有好的结果。
这是完全无法诊断的,当无法加载扩展时,Explorer 不会发出吱吱声。而且对于普通用户来说无法修复,您不能指望他会修改晦涩的注册表项。
要完全解决这个问题还需要很长时间。实际上,Windows 需要停止支持 .NET 4 之前的 .NET 版本才能获得保证。 Windows 8 一开始没有默认安装 .NET 3.5,但添加它仍然非常容易。因此,请花很多时间,十年或更长时间。
好吧,小心点,如果你不担心随机失败,你可以让它在 C# 中工作。接下来您将陷入非常晦涩的 COM 接口(interface)细节中,从中幸存下来需要黑带技能,知道如何正确声明 [ComImport] 接口(interface)。这不是你应该自己解决的事情,别人已经做到了。我没有推荐产品的习惯,但不能跳过推荐EZShellExtensions ,一个专门设计用于帮助在 C# 中编写 shell 扩展的库。支持 deskbands 是其宣传的功能之一。使用试用版来修补这个,看看你是否能把它画好。
关于c# - 如何将我的自定义工具栏(DeskBand?)放在 Windows 7 win WPF 的任务栏上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889290/
我正在尝试使用以下代码以编程方式将 DeskBand 对象添加到系统托盘: [ComImport, Guid("6D67E846-5B9C-4db8-9CBC-DDE12F4254F1"), Inte
我正在尝试在 Windows 8.1 中实现 Deskband。我以某种方式让用户界面和其他一切正常工作。这听起来可能很愚蠢,但我不知道如何更改出现在任务栏右键单击菜单上的 Toolbars 子菜单选
我有一个用 C++ 编写的 Deskband DLL,它是通过调用 regsvr32 mydeskband.dll 注册的。 Deskband 有一个用 C# 编写的配置应用程序,我可以使用桌面应用程
我想创建一个 DeskBand 来在我的 Windows 任务栏上显示一些信息,但我正在努力实现我需要的 C++ 功能。我接触 C++ 已经有 10-15 年了。在过去的 7 年里,我一直完全在 .N
我正在寻找一个完整的示例,用于在 win7 64 位的任务栏上创建桌面工具栏。 在 C++ 中。谢谢 最佳答案 Here这是您可以使用的一个示例。 关于c++ - 在 c++ 中寻找 win7 64
如何在 Windows 7 中将自定义工具栏放在任务面板之前的任务栏上?有一个名为 Pokki 的流行应用程序可以做到这一点。 我想知道我该怎么做? Edit1:我需要一种 100% 的方式来访问 W
我已经使用来自 Codeproject 的 BandObjectLib ( Extending Explorer with Band Objects using .NET and Windows Fo
我是一名优秀的程序员,十分优秀!