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.

  • 相关阅读:
    【前端】
    Ember.js 应用入口
    Apache 反向代理实现为http添加https的外衣
    OAuth2.0 四种授权模式
    MongoDB查询重复记录并保存到文件csv
    8000用户同时在线的服务器需求分析
    Bootstrap杂记
    Virtual Box 杂记
    RESTful API你怎么看?
    使用 ASP.NET Core 作为 mediasoup 的信令服务器
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204905.html
Copyright © 2011-2022 走看看