我目前正在使用此DLL C:\ Windows \ System32 \ wmp.dll,我的代码是这个
WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayerClass();
wmp.URL = "SoundFile.wav";
wmp.controls.play();
并且我的代码出错了?我只是复制PASTE我在代码项目中搜索时看到的代码
答案 0 :(得分:4)
如错误消息所述,Embed Interop Types功能不支持嵌入类,只支持接口。非常容易修复,只需删除" Class"来自标识符名称。因此,您使用"适用的界面代替"。修正:
var wmp = new WMPLib.WindowsMediaPlayer();
wmp.URL = "SoundFile.wav";
wmp.controls.play();
是的,这实际上是合法的,你可以创建一个接口的实例。 COM是不同的:)这个看似怪异的魔法是由WindowMediaPlayer界面上的[CoClass] attribute实现的。它告诉C#编译器需要创建哪个COM类来提供该接口。
COM是一种非常纯粹的基于接口的编程范例。类实现永远不会公开,它只需要一个简单的工厂来创建实例。 CoCreateInstance()引擎盖下。与它交谈只能通过接口来完成。就像你的情况下的WindowMediaPlayer接口一样。
答案 1 :(得分:1)
在工具栏中的visual studio中右键单击工具并选择选择项目... ,现在转到COM组件选项卡并向下滚动,勾选Windows媒体播放器并确定。
知道你可以修改你的代码...
private void button1_Click(object sender, EventArgs e)
{
AxWMPLib.AxWindowsMediaPlayer med = new AxWMPLib.AxWindowsMediaPlayer();
// other part of your code
}