WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Sound and Media

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Windows Master System Sound Volume


Question:

Does anybody have a trick for setting the the windows system sound volume to max?

Answer:

This particular issue has been quite frustrating. It seems like writing any kind of program to adjust the system volume should be a easy and straightforward affair. The solution to the has been looked for for more than 10 years.

If you understand Visual Basic try Set the master volume level at http://www.devx.com/vb2themax/Tip/19040. Note: you could try converting this Vb code to WinBatch code.

OR

Check out QuickMix from Martin Saxon Systems http://www.ptpart.co.uk/quickmix/. Does everything I wanted, and a few things I didn't know I wanted to boot.

OR

Following is not a "solution" but can be a hint into the right direction. I have a file with some collected code and cut some lines out. I have tried it some time ago, but did not come to a final solution. There are some wheels to turn to handle the speaker volume.

You have to look into and play with the "Mixer API Support (winmm.dll)"

; ***************************************************************************
;                        Mixer API Support (winmm.dll)
; ***************************************************************************
#DefineSubRoutine udsDefineConstants ()
MMSYSERR_NOERROR = 0
MX_SHORT_NAME_CHARS = 16
MX_LONG_NAME_CHARS = 64
MAXPNAMELEN = 32                  ; max product name length (including NULL)
MAXERRORLENGTH = 128              ; max error text length (including final NULL)
MM_MIXM_LINE_CHANGE = 976       ; mixer line change notify ; &H3D0
MM_MIXM_CONTROL_CHANGE = 977    ; mixer control change notify ; &H3D1
;
;   MMRESULT error return values specific to the mixer API
;
MX_BASE = 1024
MX_INVALLINE = (MX_BASE + 0)
MX_INVALCONTROL = (MX_BASE + 1)
MX_INVALVALUE = (MX_BASE + 2)
MX_LASTERROR = (MX_BASE + 2)

MX_OBJECTF_HANDLE = -2147483648 ; &H80000000
MX_OBJECTF_MIXER = 0 ; &H0&
MX_OBJECTF_HMIXER = (MX_OBJECTF_HANDLE | MX_OBJECTF_MIXER)
MX_OBJECTF_WAVEOUT = 268435456 ; &H10000000
MX_OBJECTF_HWAVEOUT = (MX_OBJECTF_HANDLE | MX_OBJECTF_WAVEOUT)
MX_OBJECTF_WAVEIN = 536870912 ; &H20000000
MX_OBJECTF_HWAVEIN = (MX_OBJECTF_HANDLE | MX_OBJECTF_WAVEIN)
MX_OBJECTF_MIDIOUT = 805306368 ; &H30000000
MX_OBJECTF_HMIDIOUT = (MX_OBJECTF_HANDLE | MX_OBJECTF_MIDIOUT)
MX_OBJECTF_MIDIIN = 1073741824 ; &H40000000
MX_OBJECTF_HMIDIIN = (MX_OBJECTF_HANDLE | MX_OBJECTF_MIDIIN)
MX_OBJECTF_AUX = 1342177280 ; &H50000000
;
;   MXLINE.fdwLine
;
MXLN_LINEF_ACTIVE = 1 ; &H1&
MXLN_LINEF_DISCONNECTED = 32768 ; &H8000&
MXLN_LINEF_SOURCE = -2147483648 ; &H80000000
;
;   MXLINE.dwComponentType
;
MXLN_COMPTYPE_DST_FIRST = 0 ; &H0&
MXLN_COMPTYPE_DST_UNDEFINED = (MXLN_COMPTYPE_DST_FIRST + 0)
MXLN_COMPTYPE_DST_DIGITAL = (MXLN_COMPTYPE_DST_FIRST + 1)
MXLN_COMPTYPE_DST_LINE = (MXLN_COMPTYPE_DST_FIRST + 2)
MXLN_COMPTYPE_DST_MONITOR = (MXLN_COMPTYPE_DST_FIRST + 3)
MXLN_COMPTYPE_DST_SPEAKERS = (MXLN_COMPTYPE_DST_FIRST + 4)
MXLN_COMPTYPE_DST_HEADPHONES = (MXLN_COMPTYPE_DST_FIRST + 5)
MXLN_COMPTYPE_DST_TELEPHONE = (MXLN_COMPTYPE_DST_FIRST + 6)
MXLN_COMPTYPE_DST_WAVEIN = (MXLN_COMPTYPE_DST_FIRST + 7)
MXLN_COMPTYPE_DST_VOICEIN = (MXLN_COMPTYPE_DST_FIRST + 8)
MXLN_COMPTYPE_DST_LAST = (MXLN_COMPTYPE_DST_FIRST + 8)

MXLN_COMPTYPE_SRC_FIRST = 4096 ; &H1000&
MXLN_COMPTYPE_SRC_UNDEFINED = (MXLN_COMPTYPE_SRC_FIRST + 0)
MXLN_COMPTYPE_SRC_DIGITAL = (MXLN_COMPTYPE_SRC_FIRST + 1)
MXLN_COMPTYPE_SRC_LINE = (MXLN_COMPTYPE_SRC_FIRST + 2)
MXLN_COMPTYPE_SRC_MICROPHONE = (MXLN_COMPTYPE_SRC_FIRST + 3)
MXLN_COMPTYPE_SRC_SYNTHESIZER = (MXLN_COMPTYPE_SRC_FIRST + 4)
MXLN_COMPTYPE_SRC_COMPACTDISC = (MXLN_COMPTYPE_SRC_FIRST + 5)
MXLN_COMPTYPE_SRC_TELEPHONE = (MXLN_COMPTYPE_SRC_FIRST + 6)
MXLN_COMPTYPE_SRC_PCSPEAKER = (MXLN_COMPTYPE_SRC_FIRST + 7)
MXLN_COMPTYPE_SRC_WAVEOUT = (MXLN_COMPTYPE_SRC_FIRST + 8)
MXLN_COMPTYPE_SRC_AUXILIARY = (MXLN_COMPTYPE_SRC_FIRST + 9)
MXLN_COMPTYPE_SRC_ANALOG = (MXLN_COMPTYPE_SRC_FIRST + 10)
MXLN_COMPTYPE_SRC_LAST = (MXLN_COMPTYPE_SRC_FIRST + 10)
;
;   MXLINE.Target.dwType
;
MXLN_TARGETTYPE_UNDEFINED = 0
MXLN_TARGETTYPE_WAVEOUT = 1
MXLN_TARGETTYPE_WAVEIN = 2
MXLN_TARGETTYPE_MIDIOUT = 3
MXLN_TARGETTYPE_MIDIIN = 4
MXLN_TARGETTYPE_AUX = 5

MX_GETLINEINFOF_DESTINATION = 0 ; &H0&
MX_GETLINEINFOF_SOURCE = 1 ; &H1&
MX_GETLINEINFOF_LINEID = 2 ; &H2&
MX_GETLINEINFOF_COMPONENTTYPE = 3 ; &H3&
MX_GETLINEINFOF_TARGETTYPE = 4 ; &H4&
MX_GETLINEINFOF_QUERYMASK = 15 ; &HF&
;
;   MXCONTROL.fdwControl
;
MXCTRL_CTRLF_UNIFORM = 1 ; &H1&
MXCTRL_CTRLF_MULTIPLE = 2 ; &H2&
MXCTRL_CTRLF_DISABLED = -2147483648 ; &H80000000
;
;   MXCTRL_CTRLTYPE_xxx building block defines
;
MXCTRL_CT_CLASS_MASK = -268435456 ; &HF0000000
MXCTRL_CT_CLASS_CUSTOM = 0 ; &H0&
MXCTRL_CT_CLASS_METER = 268435456 ; &H10000000
MXCTRL_CT_CLASS_SWITCH = 536870912 ; &H20000000
MXCTRL_CT_CLASS_NUMBER = 805306368 ; &H30000000
MXCTRL_CT_CLASS_SLIDER = 1073741824 ; &H40000000
MXCTRL_CT_CLASS_FADER = 1342177280 ; &H50000000
MXCTRL_CT_CLASS_TIME = 1610612736 ; &H60000000
MXCTRL_CT_CLASS_LIST = 1879048192 ; &H70000000
MXCTRL_CT_SUBCLASS_MASK = 251658240 ; &HF000000
MXCTRL_CT_SC_SWITCH_BOOLEAN = 0 ; &H0&
MXCTRL_CT_SC_SWITCH_BUTTON = 16777216 ; &H1000000
MXCTRL_CT_SC_METER_POLLED = 0 ; &H0&
MXCTRL_CT_SC_TIME_MICROSECS = 0 ; &H0&
MXCTRL_CT_SC_TIME_MILLISECS = 16777216 ; &H1000000
MXCTRL_CT_SC_LIST_SINGLE = 0 ; &H0&
MXCTRL_CT_SC_LIST_MULTIPLE = 16777216 ; &H1000000
MXCTRL_CT_UNITS_MASK = 16711680 ; &HFF0000
MXCTRL_CT_UNITS_CUSTOM = 0 ; &H0&
MXCTRL_CT_UNITS_BOOLEAN = 65536 ; &H10000
MXCTRL_CT_UNITS_SIGNED = 131072 ; &H20000
MXCTRL_CT_UNITS_UNSIGNED = 196608 ; &H30000
MXCTRL_CT_UNITS_DECIBELS = 262144  ;  in 10ths ; &H40000
MXCTRL_CT_UNITS_PERCENT = 327680   ;  in 10ths ; &H50000
;
;   Commonly used control types for specifying MXCONTROL.dwControlType
;
MXCTRL_CTRLTYPE_CUSTOM = (MXCTRL_CT_CLASS_CUSTOM | MXCTRL_CT_UNITS_CUSTOM)
MXCTRL_CTRLTYPE_BOOLEANMETER = (MXCTRL_CT_CLASS_METER | MXCTRL_CT_SC_METER_POLLED | MXCTRL_CT_UNITS_BOOLEAN)
MXCTRL_CTRLTYPE_SIGNEDMETER = (MXCTRL_CT_CLASS_METER | MXCTRL_CT_SC_METER_POLLED | MXCTRL_CT_UNITS_SIGNED)
MXCTRL_CTRLTYPE_PEAKMETER = (MXCTRL_CTRLTYPE_SIGNEDMETER + 1)
MXCTRL_CTRLTYPE_UNSIGNEDMETER = (MXCTRL_CT_CLASS_METER | MXCTRL_CT_SC_METER_POLLED | MXCTRL_CT_UNITS_UNSIGNED)
MXCTRL_CTRLTYPE_BOOLEAN = (MXCTRL_CT_CLASS_SWITCH | MXCTRL_CT_SC_SWITCH_BOOLEAN | MXCTRL_CT_UNITS_BOOLEAN)
MXCTRL_CTRLTYPE_ONOFF = (MXCTRL_CTRLTYPE_BOOLEAN + 1)
MXCTRL_CTRLTYPE_MUTE = (MXCTRL_CTRLTYPE_BOOLEAN + 2)
MXCTRL_CTRLTYPE_MONO = (MXCTRL_CTRLTYPE_BOOLEAN + 3)
MXCTRL_CTRLTYPE_LOUDNESS = (MXCTRL_CTRLTYPE_BOOLEAN + 4)
MXCTRL_CTRLTYPE_STEREOENH = (MXCTRL_CTRLTYPE_BOOLEAN + 5)
MXCTRL_CTRLTYPE_BUTTON = (MXCTRL_CT_CLASS_SWITCH | MXCTRL_CT_SC_SWITCH_BUTTON | MXCTRL_CT_UNITS_BOOLEAN)
MXCTRL_CTRLTYPE_DECIBELS = (MXCTRL_CT_CLASS_NUMBER | MXCTRL_CT_UNITS_DECIBELS)
MXCTRL_CTRLTYPE_SIGNED = (MXCTRL_CT_CLASS_NUMBER | MXCTRL_CT_UNITS_SIGNED)
MXCTRL_CTRLTYPE_UNSIGNED = (MXCTRL_CT_CLASS_NUMBER | MXCTRL_CT_UNITS_UNSIGNED)
MXCTRL_CTRLTYPE_PERCENT = (MXCTRL_CT_CLASS_NUMBER | MXCTRL_CT_UNITS_PERCENT)
MXCTRL_CTRLTYPE_SLIDER = (MXCTRL_CT_CLASS_SLIDER | MXCTRL_CT_UNITS_SIGNED)
MXCTRL_CTRLTYPE_PAN = (MXCTRL_CTRLTYPE_SLIDER + 1)
MXCTRL_CTRLTYPE_QSOUNDPAN = (MXCTRL_CTRLTYPE_SLIDER + 2)
MXCTRL_CTRLTYPE_FADER = (MXCTRL_CT_CLASS_FADER | MXCTRL_CT_UNITS_UNSIGNED)
MXCTRL_CTRLTYPE_VOLUME = (MXCTRL_CTRLTYPE_FADER + 1)
MXCTRL_CTRLTYPE_BASS = (MXCTRL_CTRLTYPE_FADER + 2)
MXCTRL_CTRLTYPE_TREBLE = (MXCTRL_CTRLTYPE_FADER + 3)
MXCTRL_CTRLTYPE_EQUALIZER = (MXCTRL_CTRLTYPE_FADER + 4)
MXCTRL_CTRLTYPE_SINGLESELECT = (MXCTRL_CT_CLASS_LIST | MXCTRL_CT_SC_LIST_SINGLE | MXCTRL_CT_UNITS_BOOLEAN)
MXCTRL_CTRLTYPE_MUX = (MXCTRL_CTRLTYPE_SINGLESELECT + 1)
MXCTRL_CTRLTYPE_MULTIPLESELECT = (MXCTRL_CT_CLASS_LIST | MXCTRL_CT_SC_LIST_MULTIPLE | MXCTRL_CT_UNITS_BOOLEAN)
MXCTRL_CTRLTYPE_MIXER = (MXCTRL_CTRLTYPE_MULTIPLESELECT + 1)
MXCTRL_CTRLTYPE_MICROTIME = (MXCTRL_CT_CLASS_TIME | MXCTRL_CT_SC_TIME_MICROSECS | MXCTRL_CT_UNITS_UNSIGNED)
MXCTRL_CTRLTYPE_MILLITIME = (MXCTRL_CT_CLASS_TIME | MXCTRL_CT_SC_TIME_MILLISECS | MXCTRL_CT_UNITS_UNSIGNED)


MX_GETLINECONTROLSF_ALL = 0 ; &H0&
MX_GETLINECONTROLSF_ONEBYID = 1 ; &H1&
MX_GETLINECONTROLSF_ONEBYTYPE = 2 ; &H2&
MX_GETLINECONTROLSF_QUERYMASK = 15 ; &HF&

MX_GETCTRLDETAILSF_VALUE = 0 ; &H0&
MX_GETCTRLDETAILSF_LISTTEXT = 1 ; &H1&
MX_GETCTRLDETAILSF_QUERYMASK = 15 ; &HF&

MX_SETCTRLDETAILSF_VALUE = 0 ; &H0&
MX_SETCTRLDETAILSF_CUSTOM = 1 ; &H1&
MX_SETCTRLDETAILSF_QUERYMASK = 15 ; &HF&


;----------------------------------------------------------------------------------------------------------------------
;; enums to identify mixer volume controls
;Public Enum VOL_CONTROL
;    SPEAKER = 0
;    LINEIN = 1
;    MICROPHONE = 2
;    SYNTHESIZER = 3
;    COMPACTDISC = 4
;    WAVEOUT = 5
;    AUXILIARY = 6
;End Enum
;----------------------------------------------------------------------------------------------------------------------
EM_VOL_CONTROL = "SPEAKER|LINEIN|MICROPHONE|SYNTHESIZER|COMPACTDISC|WAVEOUT|AUXILIARY"
EN_VOL_CONTROL = "0|1|2|3|4|5|6"

icount = ItemCount(EM_VOL_CONTROL,"|")
for i=1 to icount
   item   = ItemExtract(i,EM_VOL_CONTROL,"|")
   %item% = ItemExtract(i,EN_VOL_CONTROL,"|")
next
;----------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------
;; enums to identify mixer mute controls
;Public Enum MUTE_CONTROL
;    SPEAKER_MUTE = 7
;    LINEIN_MUTE = 8
;    MICROPHONE_MUTE = 9
;    SYNTHESIZER_MUTE = 10
;    COMPACTDISC_MUTE = 11
;    WAVEOUT_MUTE = 12
;    AUXILIARY_MUTE = 13
;End Enum
;----------------------------------------------------------------------------------------------------------------------
EM_MUTE_CONTROL = "SPEAKER_MUTE|LINEIN_MUTE|MICROPHONE_MUTE|SYNTHESIZER_MUTE|COMPACTDISC_MUTE|WAVEOUT_MUTE|AUXILIARY_MUTE"
EN_MUTE_CONTROL = "7|8|9|10|11|12|13"

icount = ItemCount(EM_MUTE_CONTROL,"|")
for i=1 to icount
   item   = ItemExtract(i,EM_MUTE_CONTROL,"|")
   %item% = ItemExtract(i,EN_MUTE_CONTROL,"|")
next
;----------------------------------------------------------------------------------------------------------------------


CALLBACK_WINDOW = 65536 ; &H10000
GWL_WNDPROC = (-4)

#EndSubroutine


; Maybe you need an array:

;----------------------------------------------------------------------------------------------------------------------
;uMXCONTROLs(20)      As MXCONTROL ; local array to store mixer controls
;----------------------------------------------------------------------------------------------------------------------
uMXCONTROLs = ArrDimension(20)
;----------------------------------------------------------------------------------------------------------------------






;You need some UDF's:

#DefineFunction OpenMixer (hMixerHandle, MixerNumber)
If ( (MixerNumber < 0) | (MixerNumber > (mixerGetNumDevs() - 1)) ) Then Return (@false)

udsDefineConstants()

; open the mixer
result = mixerOpen(hMixerHandle, MixerNumber, 0, 0, 0)
If (result != MMSYSERR_NOERROR) Then Return (@false)

; get the primary line controls by name, (this does not get all of the controls).
; speaker (master) volume
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_DST_SPEAKERS, MXCTRL_CTRLTYPE_VOLUME, uMXCONTROLs(SPEAKER))
; microphone volume
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_MICROPHONE, MXCTRL_CTRLTYPE_VOLUME, uMXCONTROLs(MICROPHONE))
; Line volume
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_AUXILIARY, MXCTRL_CTRLTYPE_VOLUME, uMXCONTROLs(AUXILIARY))
; CD volume
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_COMPACTDISC, MXCTRL_CTRLTYPE_VOLUME, uMXCONTROLs(COMPACTDISC))
; Synthesizer volume
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_SYNTHESIZER, MXCTRL_CTRLTYPE_VOLUME, uMXCONTROLs(SYNTHESIZER))
; wave volume
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_WAVEOUT, MXCTRL_CTRLTYPE_VOLUME, uMXCONTROLs(WAVEOUT))
; Aux volume
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_LINE, MXCTRL_CTRLTYPE_VOLUME, uMXCONTROLs(LINEIN))

; speaker (master) mute
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_DST_SPEAKERS, MXCTRL_CTRLTYPE_MUTE, uMXCONTROLs(SPEAKER_MUTE))
; microphone mute
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_MICROPHONE, MXCTRL_CTRLTYPE_MUTE, uMXCONTROLs(MICROPHONE_MUTE))
; Line mute
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_AUXILIARY, MXCTRL_CTRLTYPE_MUTE, uMXCONTROLs(AUXILIARY_MUTE))
; CD mute
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_COMPACTDISC, MXCTRL_CTRLTYPE_MUTE, uMXCONTROLs(COMPACTDISC_MUTE))
; Synthesizer mute
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_SYNTHESIZER, MXCTRL_CTRLTYPE_MUTE, uMXCONTROLs(SYNTHESIZER_MUTE))
; wave mute
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_WAVEOUT, MXCTRL_CTRLTYPE_MUTE, uMXCONTROLs(WAVEOUT_MUTE))
; Aux mute
result = GetMXCONTROL(hMixerHandle, MXLN_COMPTYPE_SRC_LINE, MXCTRL_CTRLTYPE_MUTE, uMXCONTROLs(LINEIN_MUTE))

Return (@true)
#EndFunction
;----------------------------------------------------------------------------------------------------------------------


;----------------------------------------------------------------------------------------------------------------------
;Private Function GetMXCONTROL(ByVal hMixer As Long, ByVal componentType As Long, ByVal ctrlType As Long, ByRef mxc As MXCONTROL) As Long
;    ; This function attempts to obtain a mixer control. Returns True if successful.
;    Dim mxlc        As MXLINECONTROLS
;    Dim mxl         As MXLINE
;    Dim hMem        As Long
;    Dim ret         As Long
;
;    mxl.cbStruct = Len(mxl)
;    mxl.dwComponentType = componentType
;    ; Obtain a line corresponding to the component type
;    ret = mixerGetLineInfo(hMixer, mxl, MX_GETLINEINFOF_COMPONENTTYPE)
;    If ret = MMSYSERR_NOERROR Then
;        mxlc.cbStruct = Len(mxlc)
;        mxlc.dwLineID = mxl.dwLineID
;        mxlc.dwControl = ctrlType
;        mxlc.cControls = 1
;        mxlc.cbmxctrl = Len(mxc)
;        ; Allocate a buffer for the control
;        hMem = GlobalAlloc(64, Len(mxc)) ; &H40
;        mxlc.pamxctrl = GlobalLock(hMem)
;        mxc.cbStruct = Len(mxc)
;        ; Get the control
;        ret = mixerGetLineControls(hMixer, mxlc, MX_GETLINECONTROLSF_ONEBYTYPE)
;        If ret = MMSYSERR_NOERROR Then
;            GetMXCONTROL = True
;            ; Copy the control into the destination structure
;            CopyStructFromPtr mxc, mxlc.pamxctrl, Len(mxc)
;        Else
;            GetMXCONTROL = False
;        End If
;        GlobalFree (hMem)
;        Exit Function
;    End If
;    GetMXCONTROL = False
;End Function
;----------------------------------------------------------------------------------------------------------------------


#DefineFunction GetMXCONTROL (hMixer, componentType, ctrlType, mxc)
; ...
#EndFunction


#DefineFunction GetControlValue (hMixer, mxc)
;This function gets the value for a control.
; ...
#EndFunction


#DefineFunction SetControlValue (hMixer, mxc, NewVolum)
;This function sets the value for a control. Returns True if successful
; ...
#EndFunction


;----------------------------------------------------------------------------------------------------------------------
;Public Function SetVolume(Control As VOL_CONTROL, ByVal NewVolume As Long) As Long
;    SetVolume = SetControlValue(hMixerHandle, uMXCONTROLs(Control), NewVolume)
;End Function
;----------------------------------------------------------------------------------------------------------------------
#DefineFunction SetVolume (Control, NewVolume)
result = SetControlValue(hMixerHandle, uMXCONTROLs(Control), NewVolume)           ; ???
Return (result)
#EndFunction
;----------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------
;Public Function GetVolume(Control As VOL_CONTROL) As Long
;    GetVolume = GetControlValue(hMixerHandle, uMXCONTROLs(Control))
;End Function
;----------------------------------------------------------------------------------------------------------------------
#DefineFunction GetVolume (Control)
result = GetControlValue(hMixerHandle, uMXCONTROLs(Control))           ; ???
Return (result)
#EndFunction
;----------------------------------------------------------------------------------------------------------------------




;Public Function CloseMixer() As Long
;    CloseMixer = mixerClose(hMixerHandle)
;    hMixerHandle = 0
;End Function
;----------------------------------------------------------------------------------------------------------------------
#DefineFunction CloseMixer (hmx)
result = mixerClose(hmx)
Drop (hmx)
Return (result)
#EndFunction
;----------------------------------------------------------------------------------------------------------------------

and so on ...
Article ID:   W16720
File Created: 2005:02:18:12:22:00
Last Updated: 2005:02:18:12:22:00