【发布时间】:2014-06-20 19:29:43
【问题描述】:
我正在尝试在我的应用程序的任务栏中实现一个 DeskBand,我已经检查了 documentation,但它非常稀疏。它没有解释如何实现 IDeskBand2 接口。
我在网上找到的关于此的信息非常少,而且我发现的东西不起作用。我发现 CodeProject 上看起来很有前途的一段代码只不过是编译时错误的源泉,直到今天我偶然发现了this 网站。
到目前为止,我得到的是这样的:
class COMInterop
{
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("79D16DE4-ABEE-4021-8D9D-9169B261D657")]
public interface IDeskBand2
{
void GetWindow(out System.IntPtr phwnd);
void ContextSensitiveHelp([In] bool fEnterMode);
void ShowDW([In] bool fShow);
void CloseDW([In] UInt32 dwReserved);
void ResizeBorderDW(IntPtr prcBorder, [In, MarshalAs(UnmanagedType.IUnknown)] Object punkToolbarSite, bool fReserved);
void GetBandInfo(UInt32 dwBandID, UInt32 dwViewMode, ref DESKBANDINFO pdbi);
bool CanRenderComposited();
bool GetCompositionState();
void SetCompositionState(bool fCompositionEnabled);
}
}
位于名为 COMInterop.cs 的 Class 文件中。
我现在遇到的问题在第 24 行。它说找不到The type or namespace 'DESKBANDINFO。 (您是否缺少 using 指令或程序集引用?)
我如何实现这一点 - 您是否有任何适用于 Windows 7+ 的 DeskBand(见下图)好的文档?
【问题讨论】:
-
也许这个P/Invoke info可以帮助你?
-
感谢@pasty,但现在它说找不到 DBIM。我正在尝试在线搜索以了解原因。
-
您可以在 P/Invoke 网站上搜索您需要的结构...
-
不要在 .NET 中编写桌带。 Deskbands 在 Explorer.exe 进程中运行,因此出于同样的原因不应该用 .NET 编写 shell extensions shouldn't be written in .NET。