gpt4 book ai didi

c# - 如何将我的自定义工具栏(DeskBand?)放在 Windows 7 win WPF 的任务栏上?

转载 作者:太空狗 更新时间:2023-10-30 00:11:17 25 4
gpt4 key购买 nike

如何在 Windows 7 中将自定义工具栏放在任务面板之前的任务栏上?有一个名为 Pokki 的流行应用程序可以做到这一点。 enter image description here我想知道我该怎么做?

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com