zoukankan      html  css  js  c++  java
  • 一段设置和取消windows静音效果的Delphi代码

     看到完美mm在windows版提问求这么一个dos命令,发现没有,于是自己摘录了以下代码编译了一个控制台程序

    unit Unit1;
    interface
    uses MMSystem, Dialogs;
    type TDeviceName = (Master, Microphone, WaveOut, Synth);
    procedure  SetVolumeMute(DN:TDeviceName; Value:Boolean);
    implementation
    procedure  SetVolumeMute(DN:TDeviceName; Value:Boolean);
    var
    hMix: HMIXER;
    mxlc: MIXERLINECONTROLS;
    mxcd: TMIXERCONTROLDETAILS;
    vol: TMIXERCONTROLDETAILS_UNSIGNED;
    mxc: MIXERCONTROL;
    mxl: TMixerLine;
    intRet: Integer;
    nMixerDevs: Integer;
    mcdMute: MIXERCONTROLDETAILS_BOOLEAN;
    begin
    // Check if Mixer is available
    nMixerDevs := mixerGetNumDevs();
    if (nMixerDevs < 1) then
    begin
       Exit;
    end;
    // open the mixer
    intRet := mixerOpen(@hMix, 0, 0, 0, 0);
    if intRet = MMSYSERR_NOERROR then
    begin
       case DN of
         Master :  mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
         Microphone :
                 mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
         WaveOut : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
         Synth  :  mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER;
       end;
        mxl.cbStruct        := SizeOf(mxl);
       // mixerline info
       intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);
       if intRet = MMSYSERR_NOERROR then
       begin
         FillChar(mxlc, SizeOf(mxlc),0);
         mxlc.cbStruct := SizeOf(mxlc);
         mxlc.dwLineID := mxl.dwLineID;
         mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;
         mxlc.cControls := 1;
         mxlc.cbmxctrl := SizeOf(mxc);
         mxlc.pamxctrl := @mxc;
         // Get the mute control
         intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE);
         if intRet = MMSYSERR_NOERROR then
         begin
           FillChar(mxcd, SizeOf(mxcd),0);
           mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS);
           mxcd.dwControlID := mxc.dwControlID;
           mxcd.cChannels := 1;
           mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN);
           mxcd.paDetails := @mcdMute;
           // Set and UnSet  mute
           mcdMute.fValue := Ord(Value);
           intRet := mixerSetControlDetails(hMix, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
           if intRet <> MMSYSERR_NOERROR then
             ShowMessage('SetControlDetails Error');
         end
         else
           ShowMessage('GetLineInfo Error');
       end;
       intRet := mixerClose(hMix);
    end;
    end;
    end.

  • 相关阅读:
    phone 接口实现
    linux 下查找文件或者内容常有命令【转】
    【转】线程问题引起的内存泄露
    Canvas的save和restore 之二
    getIdentifer()函数的用法
    canvas.clipRect
    blob
    Android中Context
    canvas中的save用法之一
    sharedPreferences
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204905.html
Copyright © 2011-2022 走看看