- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 

Ställa in volymen Kategori: Multimedia
Inlagt: 2002-09-03
Läst: 1303
Inlagt av: Staffan Berg
Beskrivning
Ett kodexempel som ställer in mastervolymen till ditt ljudprogram. 
Kod
interface

uses
 SysUtils, Windows, MMSystem;

procedure SetMasterVolume(Mixer: hMixerObj; Value: Word);

implementation

function GetMasterVolumeControl( Mixer: hMixerObj; var Control: TMixerControl): MMResult;
//Returns True on success
var
 Line: TMixerLine;
 Controls: TMixerLineControls;
begin
 ZeroMemory(@Line, SizeOf(Line));
 Line.cbStruct := SizeOf(Line);
 Line.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
 Result := mixerGetLineInfo(Mixer, @Line, MIXER_GETLINEINFOF_COMPONENTTYPE);
if Result = MMSYSERR_NOERROR then
 begin
  ZeroMemory(@Controls, SizeOf(Controls));
  Controls.cbStruct := SizeOf(Controls);
  Controls.dwLineID := Line.dwLineID;
  Controls.cControls := 1;
  Controls.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME;
  Controls.cbmxctrl := SizeOf(Control);
  Controls.pamxctrl := @Control;
  Result := mixerGetLineControls(Mixer, @Controls, MIXER_GETLINECONTROLSF_ONEBYTYPE);
 end;
end;


procedure SetMasterVolume(Mixer: hMixerObj; Value: Word);
var
 MasterVolume: TMixerControl;
 Details: TMixerControlDetails;
 UnsignedDetails: TMixerControlDetailsUnsigned;
 Code: MMResult;
begin
 Code := GetMasterVolumeControl(Mixer, MasterVolume);
if Code = MMSYSERR_NOERROR then
 begin
  with Details do
  begin
   cbStruct := SizeOf(Details);
   dwControlID := MasterVolume.dwControlID;
   cChannels := 1; {set all channels}
   cMultipleItems := 0;
   cbDetails := SizeOf(UnsignedDetails);
   paDetails := @UnsignedDetails;
  end;
  UnsignedDetails.dwValue := Value;
  Code := mixerSetControlDetails(Mixer, @Details, MIXER_SETCONTROLDETAILSF_VALUE);
 end;
if Code <> MMSYSERR_NOERROR then
  raise Exception.CreateFmt('SetMasterVolume failure, ' + 'multimedia system error #%d', [Code]);
end;



 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -