PDA

View Full Version : سوال: نحوه دسترسی به میزان volume در دلفی



ganikas
شنبه 19 فروردین 1396, 12:32 عصر
سلام خدمت اساتید محترم
من یک برنامه مدیا پلیر یاختم که میخوام با کمک یک task bar میزان صدا رو هم کم و زیاد کنم اما خیلی گشتم برای پیدا کردن یه کد بدرد بخور ...لطفا اگه کسی میدونه راهنمایی کنه ممنون
در ضمن یه نمونه کد هس تو همین سایت که اصلا کار نکرد انگار یه چیزی کم داشت

loo30fer
شنبه 19 فروردین 1396, 16:46 عصر
اون موزیک یا فیلم رو توسط چه کامپوننتی پلی میکنید و قصد دارید ولوم صدا رو از همون کامپوننت کم کنید یا ولوم ویندوز ؟

persia_hrn
یک شنبه 20 فروردین 1396, 11:55 صبح
اگر منظورتون Master volume Windows باشه ، اینجوری میتونید :

Uses activex, MMDevAPI;

public endpointVolume: IAudioEndpointVolume;

procedure TForm1.FormCreate(Sender: TObject);
var
deviceEnumerator: IMMDeviceEnumerator;
defaultDevice: IMMDevice;
begin
EndpointVolume:=nil;
CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, deviceEnumerator);
deviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, defaultDevice);
defaultDevice.Activate(IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, nil, endpointVolume);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
var
VolumeLevel: Single;
begin
if endpointVolume = nil then Exit;
with Trackbar1 do volumeLevel:= Position/max;
endpointVolume.SetMasterVolumeLevelScalar(VolumeLe vel, nil);
end;


یه Trackbar بذارید روی فرم و خاصیت Max رو 100 قرار بدید .

ganikas
دوشنبه 01 خرداد 1396, 17:20 عصر
ممنون بابت پاسخت خیلی وقت بود ذهنم درگیر بود الان اوکی کردم با کمکتون اما خیلی دوس دارم بدونم اسکلت درونی دلفی رو

persia_hrn
سه شنبه 02 خرداد 1396, 15:01 عصر
اسکلت درونی دلفی منظورتون چی هست ؟

یکم شفاف تر بگید تا اگه بتونم کمک کنم .

اگر منظورتون تغییر ولوم کامپوننت داخل دلفی هست که باید بگید از چه کامپوننتی استفاده می کنید .