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

解决方案 »

  1.   

    我试了下,如果程序启动了的话,
    1、单纯在注册表中改的话,也不会在程序中起作用,在我的程序里面读到的还是修改前的默认声卡
    2、如果是通过在控制面板里面的sound and audio device来修改,录音和放音设备,这时在我的程序里面会发现默认声卡设备已经更新了。我想问一下,怎么来实现控制面板中sound and audio device中的修改声卡设备后,sound and audio device中的"确认"或"应用"按钮的实现
      

  2.   

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