我正在使用这个DLL C:\Windows\System32\wmp.dll,我的代码是
WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayerClass();
wmp.URL = "SoundFile.wav";
wmp.controls.play();

我的代码有什么问题吗?我只是复制粘贴我在代码项目中搜索时看到的代码。
发布于 2014-08-11 11:39:39
正如错误消息所指出的,embedding类型特性不支持嵌入类,只支持接口。很容易修复,只需从标识符名称中删除"Class“即可。因此,您可以使用“适用的接口”。修正:
var wmp = new WMPLib.WindowsMediaPlayer();
wmp.URL = "SoundFile.wav";
wmp.controls.play();是的,这实际上是合法的,您可以创建一个接口实例。COM是不同的:)这个看似古怪的魔术是由[CoClass]属性在WindowMediaPlayer接口上实现的。它告诉C#编译器需要创建哪些COM类来提供该接口。
COM是一个非常纯粹的基于接口的编程范例。类实现从未公开过,它只需要一个简单的工厂就可以创建实例。CoCreateInstance()在引擎盖下。只有通过接口才能与之交谈。就像你的例子中的WindowMediaPlayer接口。
发布于 2014-08-11 11:25:17
在visual中的工具箱中,右键单击一个工具并选择选择item.,现在转到COM组件选项卡并向下滚动,勾选windows和Ok。
知道你可以纠正你的密码..。
private void button1_Click(object sender, EventArgs e)
{
AxWMPLib.AxWindowsMediaPlayer med = new AxWMPLib.AxWindowsMediaPlayer();
// other part of your code
}https://stackoverflow.com/questions/25241032
复制相似问题