----------------------------------------------------------------------- "Delphi X-Files" MIXERLINE_COMPONENTTYPE_DST_SPEAKERSthen begin ShowMessage('Hет миксера!!!'); svEnable:=False; exit; end else svEnable:=true; mixlinectrl.cbStruct:=sizeof(mixlinectrl); mixlinectrl.dwControlType:=MIXERCONTROL_CONTROLTYPE_VOLUME; mixlinectrl.dwLineID:=mixline.dwLineID; mixlinectrl.cControls:=2; mixlinectrl.cbmxctrl:=sizeof(mixctrl); mixctrl.dwControlType:=MIXERCONTROL_CONTROLTYPE_VOLUME; mixlinectrl.pamxctrl:=@mixctrl; mixerGetLineControls(hmix,@mixlinectrl,MIXER_GETLINECONTROLSF_ONEBYTYPE); VolumeID:=mixctrl.dwControlID; volmin:=mixctrl.Bounds.dwMinimum; volmax:=mixctrl.Bounds.dwMaximum; details.cbStruct:=sizeof(details); details.dwControlID:=VolumeID; details.cChannels:=1; details.cMultipleItems:=0; details.cbDetails:=sizeof(valdets); details.paDetails:=@valdets; mixerGetControlDetails(hmix,@details,MIXER_GETCONTROLDETAILSF_VALUE); curvolume:=valdets.dwValue; VolBar.Min:=volmin; VolBar.Max:=volmax; VolBar.Position:=curvolume; end; procedure TSetVol.VolBarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if not svEnable then exit; X:=Round(X/VolBar.Width*(VolBar.Max-VolBar.Min)+VolBar.Min); VolBar.Position:=X; details.cbStruct:=sizeof(details); details.dwControlID:=VolumeID; details.cChannels:=1; details.cMultipleItems:=0; details.cbDetails:=sizeof(valdets); details.paDetails:=@valdets; if X>4000 then valdets.dwValue:=VolBar.Position else valdets.dwValue:=0; mixerSetControlDetails(hmix,@details,MIXER_SETCONTROLDETAILSF_VALUE); end; procedure TSetVol.FormDestroy(Sender: TObject); begin hVolForm:=0; if not svEnable then exit; mixerClose(hmix); inherited; end; procedure TSetVol.SpeedButton1Click(Sender: TObject); begin if not svEnable then exit; VolBar.Position:=VolBar.Position-(VolBar.Max-VolBar.Min)div 10; if VolBar.Position4000then valdets.dwValue:=VolBar.Position else valdets.dwValue:=0; mixerSetControlDetails(hmix,@details,MIXER_SETCONTROLDETAILSF_VALUE); end; procedure TSetVol.SpeedButton2Click(Sender: TObject); begin if not svEnable then exit; VolBar.Position:=VolBar.Position+(VolBar.Max-VolBar.Min)div 10; if VolBar.Position>VolBar.Maxthen VolBar.Position:=VolBar.Max; details.cbStruct:=sizeof(details); details.dwControlID:=VolumeID; details.cChannels:=1; details.cMultipleItems:=0; details.cbDetails:=sizeof(valdets); details.paDetails:=@valdets; if VolBar.Position>4000then valdets.dwValue:=VolBar.Position else valdets.dwValue:=0; mixerSetControlDetails(hmix,@details,MIXER_SETCONTROLDETAILSF_VALUE); end; end. --------------------------------------------------------------------------------