麻烦高手看看这段代码怎么用?

2020-06-08 13:26:33 +08:00
 JCZ2MkKb5S8ZX9pq
2199 次点击
所在节点    Windows
12 条回复
Encloud
2020-06-08 14:25:29 +08:00
复制那大段代码到 powershell,执行以后再执行下面这句,会返回一个 boolean 标记当前系统有没有在出声
[Foo.Bar]::IsWindowsPlayingSound()
JCZ2MkKb5S8ZX9pq
2020-06-08 17:36:02 +08:00
@Encloud 感谢,运行成功了。
请问能方便地改为其它执行方式吗?我想在 python 里调用,它这个代码可以改成命令行吗?
JCZ2MkKb5S8ZX9pq
2020-06-08 18:02:00 +08:00
@Encloud 请问这是啥语言,有办法保存为可以执行的单个文件吗?
cozof
2020-06-08 18:55:25 +08:00
@JCZ2MkKb5S8ZX9pq 这是大 C#啊,可用 Visual Studio 编译成 exe 。
JCZ2MkKb5S8ZX9pq
2020-06-08 20:07:19 +08:00
@cozof
终究还是要装 visual studio 嘛,太大了一直不想装……
装了也用不来…… 我看看有没有在线可以转的
JCZ2MkKb5S8ZX9pq
2020-06-08 21:57:32 +08:00
@cozof 试了几个在线的,不懂语法,各种失败报错。
大哥方便抽空的时候帮忙编译一下嘛?
ysc3839
2020-06-08 23:38:45 +08:00
简单看了一下,大概是调用 COM API 来实现的。因为 C# 封装了很多细节,要在 Python 中使用的话,可以参考 C/C++ 的代码,配合 ctypes 或者其他 Python 的 COM 库来调用。
当然,为了省事的话用别的语言编写也可以,我个人是比较推荐用 C++ 配合 pybind11 编写一个 Python native module 。
SilencerL
2020-06-08 23:57:05 +08:00
https://gist.github.com/Tuisku-L/0847fa8dd93858698ac78a4bf89da0d6

保存上述代码为 .cs 文件(比如 Test.cs)

然后去 C:\Windows\Microsoft.NET\Framework64 目录下找 v4 开头的文件夹, 用里面的 csc.exe 编译刚才保存的 .cs 文件

e.g.: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe D:\Test.cs

将会在同目录生成 Test.exe

调用 Test.exe 会向标准输出流输出 True/False
ysc3839
2020-06-09 02:51:24 +08:00
用 Python 实现了这段代码 https://gist.github.com/ysc3839/5ab3899f9d095d750f88114aee94db75
依赖 comtypes https://pypi.org/project/comtypes/

不过实际测试可能不符合你的需求,这个获取的是音频输入的原始值,而不是经过音量调整或静音的值。意思就是如果有程序在播放音频,你静音之后获取到的不是 0 。
JCZ2MkKb5S8ZX9pq
2020-06-09 16:02:06 +08:00
@ysc3839 我试试看,重新发一贴是因为我觉得问题更加精细化了,之前问的比较宽泛,具体问题可能解决起来会更方便一些。

那贴就不再去顶起来了。V2 在不同分区的内容的确很容易变不见,导致某几个分区内容集中,而且有些板块从板块分区看根本没有入口。以前在版务提过这个问题,但版主的意思好像是有些分区就是要关注了才能看到……
JCZ2MkKb5S8ZX9pq
2020-06-09 16:03:14 +08:00
@SilencerL 昨天下了 vs,新建文件一直提示要有 main,但不熟悉语言就没细看。
csc 的方法也看到了,没有深入去试。
谢谢回复,我也会试试的。
JCZ2MkKb5S8ZX9pq
2020-06-09 17:21:06 +08:00
@SilencerL
@ysc3839

两位的方法都试过了,都是可行的。再次感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/679678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX