要如何才能把下面的选项勾上:
双击右下角喇叭图标,会弹出音量控制窗口,选“选项-属性-录音”,下面会出现“单声道”“双声道”的选项
问题1:如何选中双声道?
问题2:当选择了双声道并点击确定后,如何选中“双声道”下面的勾。

解决方案 »

  1.   

    微软没有公开这方面的接口。你也可以用Windows API直接操作音量控制程序窗口上的控件,但是这个方法依赖于客户运行的音量控制程序的版本,而且是不被官方支持的。
      

  2.   

    好像可以,有个老外的delphi程序做到了,但是我试了不管用
      

  3.   

    给你2个例子:
    procedure TForm1.TrackBar1Change(Sender: TObject);
    var
    t,v:Longint;
    begin
    // if a=0 then Exit;
    t:=TrackBar1.Position;
    v:=(t shl 8)or(t shl 24);
    waveOutSetVolume(0,v);
    end;
    procedure tform1.trackbar1changer (sender:tobject);//左声道
    var t,v:longint;
    begin
    t:=trackbar1.postion;
    wavoutgetvolume(0,@v);
    v:=v and $ffff0000 or (t shl 8);
    wavoutsetvolume(0,v);
    end;
    procedure tform1.trackbar2changer (sender:tobject);//右声道
    var t,v:longint;
    begin
    t:=trackbar2.postion;
    wavoutgetvolume(0,@v);
    v:=v and $0000ffff or (t shl 24);
    wavoutsetvolume(0,v);
    end;
    //获得当前音量值
    procedure TForm1.FormCreate(Sender: TObject);
    var
    v:longint;
    begin
    waveOutGetVolume(0,@v);
    TrackBar2.Position:=hi(v);
    TrackBar3.Position:=hi(v shr 16);
    if hi(v)>hi(v shr 16) then
    TrackBar1.Position:=hi(v)
    else
    TrackBar1.Position:=hi(v shr 16);
    end;
    end. 
    函数说明:
    MMRESULT waveOutGetVolume(
    HWAVEOUT hwo, 
    LPDWORD pdwVolume ); 
    MMRESULT waveOutSetVolume(
    HWAVEOUT hwo, 
    DWORD dwVolume ); 
    waveOutSetVolume
    第一个参数是波形文件输出设备标识符;
    第二个参娄是音量大小。这是一个32位的整数,低16位表示左声道的音量,
    高16位表示右声道的音量。
    waveOutGetVolume
    第一个参数是波形文件输出设备标识符;
    第二个参数是一个32位整数的指针。//详细的参考msdn
      

  4.   

    谢谢楼上各位仁兄!感激!
    TO baiduan(小安子) :虽然这不是我想实现的功能,但还是谢谢你!哪位仁兄知道方法,请赐教,谢谢哈:)不知道的也请帮俺顶顶哦
      

  5.   

    我有遇到当同时CONNECT两个DB时,会在调试时报错的情况,感觉DELPHI在调试时有些不太稳。因为同样的方法在另一支FUNCTION里是可以调试成功的。而且同事也遇到过同样的问题。感觉怪怪的