本来是想知道 windows 有没有在播放声音 /t/679222
然后搜到一个答案,好像比较接近。人家直接给出了代码,但我不知道怎么用。
.net - Determine if windows is currently playing sound - Stack Overflow
也就是最高回复的这个答案。不知道是啥语言,也不知道怎么使用。
麻烦高手指点一下。小白一个,如果能说详细点就更好了。
1
Encloud 2020-06-08 14:25:29 +08:00 1
复制那大段代码到 powershell,执行以后再执行下面这句,会返回一个 boolean 标记当前系统有没有在出声
[Foo.Bar]::IsWindowsPlayingSound() |
2
JCZ2MkKb5S8ZX9pq OP @Encloud 感谢,运行成功了。
请问能方便地改为其它执行方式吗?我想在 python 里调用,它这个代码可以改成命令行吗? |
3
JCZ2MkKb5S8ZX9pq OP @Encloud 请问这是啥语言,有办法保存为可以执行的单个文件吗?
|
4
cozof 2020-06-08 18:55:25 +08:00 via iPhone 1
@JCZ2MkKb5S8ZX9pq 这是大 C#啊,可用 Visual Studio 编译成 exe 。
|
5
JCZ2MkKb5S8ZX9pq OP |
6
JCZ2MkKb5S8ZX9pq OP @cozof 试了几个在线的,不懂语法,各种失败报错。
大哥方便抽空的时候帮忙编译一下嘛? |
7
ysc3839 2020-06-08 23:38:45 +08:00
简单看了一下,大概是调用 COM API 来实现的。因为 C# 封装了很多细节,要在 Python 中使用的话,可以参考 C/C++ 的代码,配合 ctypes 或者其他 Python 的 COM 库来调用。
当然,为了省事的话用别的语言编写也可以,我个人是比较推荐用 C++ 配合 pybind11 编写一个 Python native module 。 |
8
SilencerL 2020-06-08 23:57:05 +08:00 2
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 |
9
ysc3839 2020-06-09 02:51:24 +08:00 1
用 Python 实现了这段代码 https://gist.github.com/ysc3839/5ab3899f9d095d750f88114aee94db75
依赖 comtypes https://pypi.org/project/comtypes/ 不过实际测试可能不符合你的需求,这个获取的是音频输入的原始值,而不是经过音量调整或静音的值。意思就是如果有程序在播放音频,你静音之后获取到的不是 0 。 |
10
JCZ2MkKb5S8ZX9pq OP @ysc3839 我试试看,重新发一贴是因为我觉得问题更加精细化了,之前问的比较宽泛,具体问题可能解决起来会更方便一些。
那贴就不再去顶起来了。V2 在不同分区的内容的确很容易变不见,导致某几个分区内容集中,而且有些板块从板块分区看根本没有入口。以前在版务提过这个问题,但版主的意思好像是有些分区就是要关注了才能看到…… |
11
JCZ2MkKb5S8ZX9pq OP |
12
JCZ2MkKb5S8ZX9pq OP |