问题标签 [deskband]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
695 浏览

winapi - 将我自己的界面添加到桌带

我在 Windows 7 SP1 x64 上使用 Visual Studio 2010。

我需要制作一个与 win32 应用程序通信的自定义桌带,编译为 32 位应用程序。

我使用这篇 CodeProject 文章作为起点: http: //www.codeproject.com/Articles/39189/Shell-Extensibility-Explorer-Desk-Band-Tray-Notifi

桌带 dll(为 x64 编译)工作正常 - 我在任务栏等中看到它。

它是使用“以管理员身份运行”的 cmd.exe 中的 regsvr32 注册的。rgs 文件是这样的:

基于这个stackoverflow答案:How to add and implementation a new interface to an Inproc COM server

我在 IDL 文件中创建了一个接口:

,Visual Studio 使用 midl 编译它生成生成的头文件,我包含生成的代码:#include "GEDeskBand_i.h",我让我的类继承自

,向COM_INTERFACE_ENTRYCOM MAP 添加了一个 with 接口并添加了方法:

(好吧,我使用了Visual Studio Wizard:类视图->右键单击类,添加->实现接口),目前方法的实现只是return E_NOTIMPL;,我希望这不是问题。这就是我对服务器上的代码所做的所有事情,关于我的界面并尝试从另一个进程与这个对象进行通信。

使用#define _ATL_DEBUG_QI本文(http://msdn.microsoft.com/en-us/library/ezs95xhx%28v=vs.80%29.aspx),我在附加到 explorer.exe 时在 Visual Studio 的输出窗口中看到(加载deskbar dll并且我的COM对象存在的位置)使用正确的接口查询QueryInterface并且没有说“失败”。

这是加载桌面栏的时间:

这是我运行演示问题的测试器时:

最后一个是我的 IID,它没有说失败。

这是演示问题的测试代码:

问题是,虽然我看到了我的 DeskBand 对象的 IDeskBand 或 IPersist(CLSID 匹配,我知道它是我的对象,并且我知道它实现了该接口),但使用我的接口 IID_IGEDeskBand 的 QueryInterface 永远不会成功。

QueryInterface 确实找到了 IID,但它没有到达我的客户端。我想是因为编组。

我尝试将测试仪编译为 x64,但没有奏效。

Raymond Chen 写道:http: //blogs.msdn.com/b/oldnewthing/archive/2004/12/13/281910.aspx

我从那篇博文中了解到的只是我需要处理编组。我以为它应该是自动的?

我看到解决此问题的一种方法是构建中间生成的代理存根:CoCreateInstance 返回 E_NOINTERFACE 即使找到接口

我已经建立并注册了一个代理存根 dll,一个 32 位的,通过让 midl 创建 32 位代理代码和来自这里的配方:http: //msdn.microsoft.com/en-us/library/aa366768%28VS。 85%29.aspx

这也不起作用 - 运行测试器时,我没有看到在测试器进程中加载​​了代理存根 DLL。我是不是该?它似乎注册正确。

我不太了解 COM 甚至一般的 win32,但我已经搜索了几个小时,但我不明白我做错了什么。

0 投票
1 回答
1020 浏览

c++ - 我想创建一个 DeskBand。我必须使用 C++ 吗?

我想创建一个 DeskBand 来在我的 Windows 任务栏上显示一些信息,但是我在努力实现我在 C++ 中需要的功能。我接触 C++ 已经有 10 到 15 年了。在过去的 7 年里,我一直在完全使用 .NET 工作。

在你说之前 - 我知道 DeskBands 已被弃用。但是建议的替换 UI 元素 - 缩略图工具栏 - 不能满足我的需要。我需要一个无论用户切换到哪个应用程序都始终可见的 UI 元素,并且还需要提供足够的空间来显示一行文本——我可以容纳 30 个左右的字符。

我已经能够从 Windows SDK 示例中获得 DeskBand 来编译和运行,但现在我需要实现一些真正的功能 - 特别是......

  • 找到 AppData\Local 文件夹 ( SHGetKnownFolderPath(FOLDERID_LocalAppData...)
  • 查看 XML 文件以进行修改。每当文件更改时,我都需要解析和重新绘制。
  • 解析 XML 文件(我发现pugixml
  • 在我的 DeskBand 中显示 XML 文件中的一些数据
  • 设置计时器以每分钟重绘一次 DeskBand

...而且我意识到我对 C++ 知之甚少,以及我对 .NET 的基类库的依赖程度。如果我用 C# 编写这个任务,对我来说将非常容易。但是我在其他地方了解到,您不应该在 .NET 中编写 shell 扩展

我有哪些选择?有没有更简单的语言来完成这个 - 也许是 Python?还是我必须硬着头皮在 C++ 中做到这一点?如果是这样,对于尝试在 C++ 中实现 WinAPI shell 扩展的 .NET 开发人员有什么建议吗?

先感谢您。

0 投票
1 回答
113 浏览

c# - 使窗口对鼠标事件透明

有没有办法让应用程序窗口对鼠标事件“透明”?我希望我的表单可见,但它涵盖了一些必须单击的元素。我在考虑 DeskBand,但有人告诉我这将是相当困难的......

有任何想法吗?问候!

0 投票
1 回答
516 浏览

c# - 以编程方式添加 DeskBand 时出错

我正在尝试使用以下代码以编程方式将 DeskBand 对象添加到系统托盘:

来源:http ://www.pinvoke.net/default.aspx/Interfaces/ITrayDeskband.html

我的 DeskBand 对象是从此示例中的“BandObjectsLib”创建的:http: //www.codeproject.com/Articles/14141/Band-Objects-NET-2-0-Redux

它看起来像这样:

但是,当尝试添加 DeskBand 对象时,我得到的只是告诉我错误代码的异常:-2147467259 此错误代码转换为 0x80004005,根据 MSDN,它是 E_FAIL:http: //msdn.microsoft.com/en -us/库/windows/desktop/aa378137.aspx

我基本上被困在这里,因为这真的不是我的专业领域。我希望有一个可能更有经验的人可以帮助我吗?提前致谢!

0 投票
1 回答
487 浏览

wpf - 带 WPF 的 DeskBand

距离上一个关于DeskBands. 所以...

我发现这个名为 的 DeskBand My Dell,戴尔当前所有的bloatware软件可能都是用 WPF 制作的。

这是桌带:

在此处输入图像描述

是否可以使用 WPF 来做到这一点?甚至只是xaml?

我得到它的唯一例子是从 2002 年开始使用 WinForms。

为什么 CLOSE 投票???这是一个简单而有效的问题!!!

0 投票
1 回答
707 浏览

vb.net - 用于 Win7 x64 的 VB.NET 中的任务栏工具栏 (DeskBand)

我想在VB2013中为Windows 7 64bit创建一个DeskBand应用程序。我找到了两个有用的网站:

  1. 带对象基础
  2. 使用 .NET 使用带对象扩展资源管理器

我的问题是,如果我想激活我的工具栏,请删除显示以下内容的弹出窗口:“**** 工具栏与此版本的 Windows 不兼容”。

我用 VB.NET Target Platform\CPU 在 Win x64 上写这个:x64

我的 VB.NET 项目文件: http ://s000.tinyupload.com/index.php?file_id=01064589043620484857

可能是什么问题呢?

请帮我。谢谢你。

0 投票
0 回答
191 浏览

winapi - 以编程方式启用 Deskband

我们通过实现 IDeskBand 接口开发了一个定制的 Deskband。

作为部署策略的一部分,我们希望自动启用 Deskband。

任何人都可以提供有关如何以编程方式或其他方式实现这一目标的指导吗?

0 投票
1 回答
264 浏览

c# - 如何通过 Windows 应用商店分发 DeskBand

我有一个用 C++ 编写的 Deskband DLL,它是通过调用 regsvr32 mydeskband.dll 注册的。Deskband 有一个用 C# 编写的配置应用程序,我可以使用桌面应用程序转换器将其转换为 UWP 应用程序。据我所知,没有办法分发需要通过 Windows 商店注册的 DLL。

我的问题是,我通过 Windows 应用商店分发整个软件包的最佳方式是什么?我的想法是我可能只通过 Windows 商店分发配置应用程序,并将应用程序链接到用于安装 Deskband DLL 的 exe 文件的在线下载,但这既麻烦又麻烦。有没有更好的办法?

0 投票
1 回答
310 浏览

vb.net - VB.NET 中的自定义托盘面板

我需要像 Windows Media Player 一样创建系统托盘“面板”。(不仅仅是图标,而是带有按钮、图像等的完整表单)

这是wmp截图:

wmp

在 VB.NET 和 Win 10 中是否可行?

谢谢和对不起我的英语.. :)

0 投票
1 回答
365 浏览

c# - IDeskBand2 实现崩溃

我为实现 IDeskBand2 的未来项目创建了一个示例模板。

gakutiregasm的注册工作,它也显示在工具栏中。如果我想显示/执行它,资源管理器就会崩溃。

对于创作,我使用了 Mircosoft 和 pinvoke 的文档。

我将我的项目与media-control-deskband 进行了比较,并尝试了一些东西(我的项目中的 COMInterop 文件,比较代码等)但找不到原因,猜测是因为实现错误。

这是我的实现。

IDeskBand2 接口:

使用中的 IDeskBand2:(GetBandInfo函数已经过测试并且可以正常工作。)

没有设计器代码的实际扩展:

感谢您的时间

损坏的文件