使用winmm.dll库从VB6应用程序播放Internet Explorer系统声音
我的声明是:使用winmm.dll库从VB6应用程序播放Internet Explorer系统声音,vb6,Vb6,我的声明是: Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName _ As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long 我正在使用代码: PlaySound Text2.Text, 0, &H1 Text2是我表单上的一个文本框,我用它来试验不同的声音别名 它适用于Windows默认声音
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName _
As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
我正在使用代码:
PlaySound Text2.Text, 0, &H1
Text2是我表单上的一个文本框,我用它来试验不同的声音别名
它适用于Windows默认声音(别名为“SystemAsterisk”、“SystemStart”、“WindowsLogOn”、“DeviceConnect”等),但如何使我的应用程序播放资源管理器声音
在注册表中,默认声音存储如下:
HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\DeviceConnect\.Default
如果我将“DeviceConnect”传递给Playsound函数,它将播放正确的声音。但我怎样才能听到树上其他树枝上储存的声音呢?例如:
HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Explorer\Navigating\.Default
我在谷歌上搜索了几个小时,但仍然没有找到解决办法。非常感谢你的帮助
戴维德
PS:我知道我可以将我想要的声音复制到我的应用程序文件夹中,但我正在尝试选择单个可执行文件以便于分发。您的导航示例是一个特定于应用程序的声音。不幸的是,您可以传递给PlaySound()调用的SND_应用程序标志将仅适用于您的应用程序 有几种方法可以在您自己的应用程序中播放此声音:
- 从注册表中读取文件名并将声音作为文件播放
- 在注册表中创建您自己的特定于应用程序的定义(从Explorer注册表项复制文件名),并使用SND_应用程序和SND_别名标志来播放它。如果始终希望程序与资源管理器版本匹配,则每次启动程序时都必须设置reg值
- 由于您不希望在程序中包含多个文件,因此可以将声音作为资源嵌入到应用程序中,并使用SND_资源标志播放它。我会注意到,如果用户在控制面板中更改导航声音,那么如果您这样做,您的声音将不匹配