Play sound on internal speakers and possibility to use old xp api function?

前端 未结 2 1587
不知归路
不知归路 2020-12-22 00:19

After the release of windows vista the Windows Function Beep plays a beep on your connected speakers instead of the internal one.

Is there anyway to access the old f

相关标签:
2条回答
  • 2020-12-22 00:38

    No. The function is implemented in a Kernel32.dll, which is loaded at runtime from whatever version of the OS you're currently running. Since the code isn't there in either your executable or in a system DLL, you can't run it (don't even think about copying over Kernel32.dll from a different OS version, that's just screaming for trouble).

    You can try using MessageBeep instead of Beep, but that gives you less control over the output and will probably still use your sound card instead of the internal

    For an interesting history of the MessageBeep function, see Larry Osterman's blog.

    0 讨论(0)
  • 2020-12-22 00:51

    The majority of computers now don't have internal speakers, so there's nothing there to access.

    The function was intentionally removed in Windows 7, according to Larry Osterman's blog; this post from the archives specifically discusses that issue. It seems that Beep.sys was removed, and the functionality of that old pseudo-device driver was changed to intentionally redirect sound to the sound card instead. The article is an interesting read from a historical standpoint.

    Larry is a MS employee who worked on the new audio framework for Vista and Win7, and he's been at MS since the dinosaur days (MS-DOS at least :D) so he'd probably know. :)

    0 讨论(0)
提交回复
热议问题