【问题标题】:How to use / access APIs in Visual Studio Express Edition C#如何在 Visual Studio Express Edition C# 中使用/访问 API
【发布时间】:2017-09-05 09:03:35
【问题描述】:

我正在开发一个自动音量控制程序,该程序会监听来自笔记本电脑的声音,如果超过指定的限制,则将其设置为某个分贝级别。

在研究中,我发现了 CoreAudioAPI,甚至下载了 Windows 10 用于访问 API 的 SDK。

但我无法访问 API。我在 Visual Studio Express Edition 2015 中使用 C#。当我编写“使用 CoreAudioAPI”时,我在 CoreAudioAPI 下得到红色波浪。与 MMDevice 和 EndpointVolume API 相同,我找不到它们!

我尝试添加引用,但未列出 API。

下面的代码给出了错误:

MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
MMDevice defaultDevice = 
devEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);

谁能告诉我如何在 VS Express 版本的 C# 程序中访问 API?

【问题讨论】:

  • 您是否添加了 SDK 附带的程序集作为对您项目的引用?
  • 我不知道在哪里可以找到它们或如何添加它们。它们是 dll 吗?
  • 看起来那些 API 没有 .Net 包装器。而是查看此:stackoverflow.com/questions/31928429/… 和此:stackoverflow.com/questions/14306048/controling-volume-mixer,但最好查看NAudio
  • “看起来那些 API 没有 .Net 包装器”——你是怎么知道的? :( 很抱歉,我是新手。很久以前我在 VB.net 上工作过,从来不需要这样做。
  • 因为我的谷歌搜索和浏览 MSDN 文档没有显示任何指向该方向的内容,也没有像 Hans Passant 这样经验丰富的 API 大师提到它。如果它存在,他会知道并如此声明。

标签: c# visual-studio winapi visual-studio-express


【解决方案1】:

命名空间来自xfx 创建并在他们的博客文章Core Audio for .NET 中描述的外部库。

该库的源代码在GitHub,压缩包为linked from the blog post

一旦您编译或提取了二进制文件,您就必须从项目中add a reference to those dll's
确保使用 browse 选项并导航到包含 Core Audio for .NET 的程序集的文件夹。

添加正确的程序集后,命名空间将被识别,您的代码将编译/不再抱怨命名空间。

【讨论】:

  • MSDN 有关于 Core Audio API 的信息,但它们是不同的组件:msdn.microsoft.com/en-us/library/windows/desktop/…。由于没有提到 C#,但提到了 C++ 和头文件,可能无法在 C# 中按原样完成?
  • @RaniaAsh:核心音频 API 是作为一组 COM 接口提供的。 COM 接口可以在 .NET 中轻松访问。详情请见COM Interop
猜你喜欢
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多