【问题标题】:Automatically Log Out of Windows when sound level reached达到声级时自动注销 Windows
【发布时间】:2017-01-21 06:28:15
【问题描述】:

对于这个问题的一些背景,我正在寻找另一个程序 对于我在背景中运行的个人windows桌面,当通过耳机检测到一定级别的声音时,它会自动将用户注销。

它是一台 Windows 10 电脑。我在纯 C 方面有相当多的经验,但我缺乏创建这样一个程序的知识。 该程序必须在登录时自动启动,并在后台运行以避免被检测到。

我真的很难过,我环顾四周问了我的 Comp Sci 朋友,他们也不知道。

[我尝试制作这个程序的原因是我有一个弟弟,他和他的朋友在我的电脑上玩在线游戏(Skype、Discord、Hangouts 等),他变得非常非常响亮,经常大喊大叫,以及激烈的笑声。 对于我的家人来说,这已成为家庭中的一个大问题,因为可以从多个楼层和多个房间听到他的声音,尤其是在晚上。告诉他保持安静并限制他的特权不再起作用,因为他不相信自己太大声了。]

【问题讨论】:

  • 用 C 写这个会很痛苦。选择具有良好 Windows 特定支持的更高级别的东西。
  • 找到一个“Clapper” - 安装它以在适当的音量下触发
  • 和他交谈发生了什么?无论如何,如上所述,这太宽泛了。 Stack Overflow 旨在帮助您解决已经有代码但没有代码的特定编程问题。
  • @mbomb007:拥有个人桌面的重点是,其他人无法访问它。
  • 如果真的是家人的问题,不只是他自己,那不应该是父母出手吗?否则,在他可以保持适当的音量之前不要让他使用你的电脑,或者不要让他用麦克风玩游戏。

标签: windows hardware


【解决方案1】:

看起来 ffmpeg volumedetect 可以完成实际检测声级的繁重工作。例如,试用我的 MBP(您必须更改 Windows 机器的输入设备):

$>ffmpeg -hide_banner -f avfoundation -i "none:0" -af "volumedetect" -t 2 -f null /dev/null

Input #0, avfoundation, from 'none:0':
  Duration: N/A, start: 316943.850567, bitrate: 2822 kb/s
    Stream #0:0: Audio: pcm_f32le, 44100 Hz, stereo, flt, 2822 kb/s
Output #0, null, to '/dev/null':
  Metadata:
    encoder         : Lavf57.62.100
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc57.75.100 pcm_s16le
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_f32le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size=N/A time=00:00:02.00 bitrate=N/A speed=0.996x
video:0kB audio:345kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[Parsed_volumedetect_0 @ 0x7f8ba8726860] n_samples: 178176
[Parsed_volumedetect_0 @ 0x7f8ba8726860] mean_volume: -60.3 dB
[Parsed_volumedetect_0 @ 0x7f8ba8726860] max_volume: -29.9 dB
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_29db: 4
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_30db: 0
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_31db: 6
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_32db: 10
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_33db: 18
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_34db: 10
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_35db: 12
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_36db: 36
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_37db: 42
[Parsed_volumedetect_0 @ 0x7f8ba8726860] histogram_38db: 48

这会在麦克风输入源上运行 ffmpeg 2 秒,并生成音频音量(分贝)以及平均和最大音量级别(这是您想要的)的直方图。

您可能可以使用 ffmpeg 作为库来执行等效操作,并将其嵌入到您选择的应用程序中。

【讨论】:

    【解决方案2】:

    虽然由于音量大小,这不会自动触发,但您可以使用网络上的另一台设备远程关闭他所在的计算机。 Windows 10 的步骤可能略有不同,但您应该能够弄清楚。请注意,如果您仍想通过音量触发它,下面的指南仍然有用,因为它显示了如何执行关闭部分。

    http://www.online-tech-tips.com/computer-tips/remote-shutdown-command/

    简单地说,步骤如下(阅读指南,因为它更具体,有图片):

    1.在目标计算机上启用远程关机

    • 控制面板、网络和共享中心、更改高级共享设置 “私人”启用“打开文件和打印机共享”[more info]
    • 修改注册表(先保存注册表备份)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
    • 添加新的 DWORD LocalAccountTokenFilterPolicy 的值为 1

    2。创建一个将关闭/重新启动计算机的批处理文件

    • 如果您打算通过音频触发它可以在目标计算机上,否则使用远程关机命令:
    • shutdown /m \\computername /r /f
      • /r - 重启电脑
      • /f - 强制程序立即关闭

    如果您尝试这些步骤后仍然收到“拒绝访问”,您可以尝试this solution

    net use \\<computer>
    shutdown -r -m \\<computer name>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多