C#:引用 Windows shell 接口
我对 C# 还很陌生,我正在尝试完成一个我一直在从事的小项目,该项目使用少量 C# 代码来协助开发 Windows 桌面小工具。基本上,我正在尝试实现 IDesktopGadget
接口,以便我可以使用 RunGadget 方法。
以下是到目前为止我从阅读有关类似接口的信息中得到的信息:
[ComImport]
[Guid("C1646BC4-F298-4F91-A204-EB2DD1709D1A")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IDesktopGadget
{
uint RunGadget([MarshalAs(UnmanagedType.LPWStr)] string gadgetPath);
}
不幸的是,当我尝试从中创建对象时出现错误:“无法创建抽象类或接口'GadgetTask.IDesktopGadget'的实例”< /code>
有人能指出我正确的方向,同时帮助我理解我做错了什么吗?
I'm pretty new to C#, I'm trying to complete a little side project I've been working on that uses a small amount of C# code to assist the development of a Windows Desktop Gadget. Basically, I'm trying to implement the IDesktopGadget
interface so that I can use the RunGadget method.
Here's what I got so far from reading information about similar interfaces:
[ComImport]
[Guid("C1646BC4-F298-4F91-A204-EB2DD1709D1A")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IDesktopGadget
{
uint RunGadget([MarshalAs(UnmanagedType.LPWStr)] string gadgetPath);
}
Unfortunately, I get an error when I try and create an object from it: "Cannot create an instance of the abstract class or interface 'GadgetTask.IDesktopGadget'"
Can someone point me in the right direction and maybe help me understand what I'm doing wrong at the same time?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上,您需要 DesktopGadget 对象的实现才能使用该界面。 MS 提供了一个标准 COM 对象来在 Windows 7 上执行此操作。您可以通过执行以下操作来创建实例:
You actually need an implementation of the DesktopGadget object in order to use the interface. MS provide a standard COM object to do it on Windows 7. You can create an instance by doing something like:
感谢您的指导。对于更直接的帮助,这对我有用:
IDesktopGadget.cs
Program.cs
Thanks for the guidance. For a little more straight forward help, this is what worked for me:
IDesktopGadget.cs
Program.cs