通过在注册表中改
HKEY_CURRENT_USER\\Software\\Microsoft\\Multimedia\\Sound Mapper\\Playback
HKEY_CURRENT_USER\\Software\\Microsoft\\Multimedia\\Sound Mapper\\DefaultDevice
这两个键值可以设置默认声卡,但如何使注册表生效呢?在我这里(WindowsXP)必须关掉修改注册表的函数后才能生效,不知道为什么?有没有什么函数可以使修改注册表里的默认声卡键值生效

解决方案 »

  1.   

    在Win98和Win Me下可能需要重启才能见效。
    我也没有尝试过发送下面的消息是否能立即起效——WM_SETTINGCHANGE。
    主要还是看Windows的相关声卡设置的等等的程序是否有处理这个消息的函数。关于这个消息具体的可以参考MSDN。如果是自己的程序需要更新注册表,WM_SETTINGCHANGE消息是告诉应用程序去注册表中更新其相关的信息,但是这个过程还是需要自己处理的。就是你的EXE必须有处理WM_SETTINGCHANGE消息的处理函数!  
     
    --------------------------------  
    如果是通知系统中其他的应用程序去更新注册表,应该使用:  
    SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,(LPARAM)TEXT("Environment"));