通过在注册表中改
HKEY_CURRENT_USER\\Software\\Microsoft\\Multimedia\\Sound Mapper\\Playback
HKEY_CURRENT_USER\\Software\\Microsoft\\Multimedia\\Sound Mapper\\DefaultDevice
这两个键值可以设置默认声卡,但如何使注册表生效呢?在我这里(WindowsXP)必须关掉修改注册表的函数后才能生效,不知道为什么?有没有什么函数可以使修改注册表里的默认声卡键值生效
HKEY_CURRENT_USER\\Software\\Microsoft\\Multimedia\\Sound Mapper\\Playback
HKEY_CURRENT_USER\\Software\\Microsoft\\Multimedia\\Sound Mapper\\DefaultDevice
这两个键值可以设置默认声卡,但如何使注册表生效呢?在我这里(WindowsXP)必须关掉修改注册表的函数后才能生效,不知道为什么?有没有什么函数可以使修改注册表里的默认声卡键值生效
我也没有尝试过发送下面的消息是否能立即起效——WM_SETTINGCHANGE。
主要还是看Windows的相关声卡设置的等等的程序是否有处理这个消息的函数。关于这个消息具体的可以参考MSDN。如果是自己的程序需要更新注册表,WM_SETTINGCHANGE消息是告诉应用程序去注册表中更新其相关的信息,但是这个过程还是需要自己处理的。就是你的EXE必须有处理WM_SETTINGCHANGE消息的处理函数!
--------------------------------
如果是通知系统中其他的应用程序去更新注册表,应该使用:
SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,(LPARAM)TEXT("Environment"));