返回列表 发帖

[系统相关] 批处理一种新的响铃方式

之前在xp下测试成功的echo 响铃方式
在win10下出现了问题
通过声卡扬声器发出的声音更加悠长顿挫
完全不是之前哪种短促单一的高频音调
而且会把多个响铃符号理解为一个响铃符号处理

经过一段时间测试
发现不同的主机和系统环境
发出来的声调可能不尽相同

为了找回之前哪种传统的声音
我试了多种方法
目前测试到使用方法
可以恢复短促单一可多次使用的响铃声
其主要原理是利用choice的无效选项字符触发响铃
  1. rem 响铃1次
  2. echo 1y|choice /t 10 /d y>nul
  3. rem 连续响铃5次
  4. echo 12345y|choice /t 10 /d y>nul
复制代码
看看大家还有什么新思路?
2

评分人数

天的白色影子

本帖最后由 qzwqzw 于 2025-3-7 12:02 编辑

回复 2# 523066680


经网络搜索,beep函数在新版本windows下已不可用蜂鸣器,也是改用声卡+扬声器输出
而且似乎在Win32 API函数中已经修改了,要使用主板自带蜂鸣器还需要调用ring0层的IO函数
https://blog.csdn.net/weixin_44290011/article/details/112348304#

另外下面的链接里也提到了在win10下用windbg的本地内核调试方法
同时也是ring0层的思路,需要用到管理员权限
https://01.me/en/2016/12/beep-in-windows-10/

没有perl环境,我用C++环境下试验了下那个kimi给出的beep代码
确认在win10下C的beep也是用声卡扬声器发声的
频率和延时都是有效的

看来唯独是cmd下的这个响铃符号被转移到了媒体文件上
C:\Windows\media\Windows Foreground.wav
天的白色影子

TOP

调用播放器播放响铃音频文件
Five66 发表于 2025-3-7 13:17



    那倒不至于,CMD的所在的conhost.exe可以调用Win32 API播放,一个很常见的WAV还用不到媒体播放器的GUI+库
天的白色影子

TOP

30年前我用QBASIC播放音乐
semiuel 发表于 2025-3-7 15:16



    又一个暴露年龄段的

还记得从电脑期刊上抄过C语言编写的《月夜奔马图》,运行效果刚出来的那一刻,感觉震撼的无与伦比,一下子感觉那台破386也有了浪漫的气息
天的白色影子

TOP

回复 9# smss


    powershell的[console]用法倒是第一次见到;感觉这段脚本不像临时写的,有些细节在这里根本用不到,比如set L= !L!,而且在脚本中也不需要那么多@。

搜了下,能见到的最早应用在PowerTip: Use PowerShell to Send Beep to Console

这里可以找到.net API关于Beep方法文档

另外在stackoverflow看到了另外一种ps的转义字符用法
  1. Write-Host -NoNewLine "`a"
复制代码
也才注意到使用echo ^G方法响铃,会在窗口标题栏显示响铃图标
天的白色影子

TOP

新发现了一个nircmd的方法
  1. nircmdc beep [Frequency] [Duration]
复制代码
而且还可以用它播放系统声音方案的配置声音
  1. nircmdc stdbeep
复制代码
天的白色影子

TOP

返回列表