V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JCZ2MkKb5S8ZX9pq
V2EX  ›  Windows

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

  •  
  •   JCZ2MkKb5S8ZX9pq · 2020-06-08 13:26:33 +08:00 · 2281 次点击
    这是一个创建于 1634 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 本来是想知道 windows 有没有在播放声音 /t/679222

    • 然后搜到一个答案,好像比较接近。人家直接给出了代码,但我不知道怎么用。

    • .net - Determine if windows is currently playing sound - Stack Overflow
      也就是最高回复的这个答案。不知道是啥语言,也不知道怎么使用。

    • 麻烦高手指点一下。小白一个,如果能说详细点就更好了。

    12 条回复    2020-06-09 17:21:06 +08:00
    Encloud
        1
    Encloud  
       2020-06-08 14:25:29 +08:00   ❤️ 1
    复制那大段代码到 powershell,执行以后再执行下面这句,会返回一个 boolean 标记当前系统有没有在出声
    [Foo.Bar]::IsWindowsPlayingSound()
    JCZ2MkKb5S8ZX9pq
        2
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-06-08 17:36:02 +08:00
    @Encloud 感谢,运行成功了。
    请问能方便地改为其它执行方式吗?我想在 python 里调用,它这个代码可以改成命令行吗?
    JCZ2MkKb5S8ZX9pq
        3
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-06-08 18:02:00 +08:00
    @Encloud 请问这是啥语言,有办法保存为可以执行的单个文件吗?
    cozof
        4
    cozof  
       2020-06-08 18:55:25 +08:00 via iPhone   ❤️ 1
    @JCZ2MkKb5S8ZX9pq 这是大 C#啊,可用 Visual Studio 编译成 exe 。
    JCZ2MkKb5S8ZX9pq
        5
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-06-08 20:07:19 +08:00
    @cozof
    终究还是要装 visual studio 嘛,太大了一直不想装……
    装了也用不来…… 我看看有没有在线可以转的
    JCZ2MkKb5S8ZX9pq
        6
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-06-08 21:57:32 +08:00
    @cozof 试了几个在线的,不懂语法,各种失败报错。
    大哥方便抽空的时候帮忙编译一下嘛?
    ysc3839
        7
    ysc3839  
       2020-06-08 23:38:45 +08:00
    简单看了一下,大概是调用 COM API 来实现的。因为 C# 封装了很多细节,要在 Python 中使用的话,可以参考 C/C++ 的代码,配合 ctypes 或者其他 Python 的 COM 库来调用。
    当然,为了省事的话用别的语言编写也可以,我个人是比较推荐用 C++ 配合 pybind11 编写一个 Python native module 。
    SilencerL
        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
    ysc3839
        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 。
    JCZ2MkKb5S8ZX9pq
        10
    JCZ2MkKb5S8ZX9pq  
    OP
       2020-06-09 16:02:06 +08:00
    @ysc3839 我试试看,重新发一贴是因为我觉得问题更加精细化了,之前问的比较宽泛,具体问题可能解决起来会更方便一些。

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

    两位的方法都试过了,都是可行的。再次感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1083 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 20:02 · PVG 04:02 · LAX 12:02 · JFK 15:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.