控制音量的元件 |
|
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
請問前輩們....
是否有使用過貴站的' TAudioMixer '元件?
是控制音量的元件
雖然很方便很簡單使用
不過在XP上無法動作
原因是在XP上執行
TAudioMixer 便會將音量設在靜音
請問各位前輩是否有辦法可以克服
或是有其他的元件可以推薦小弟替代 還有一個問題...
小弟正在試作一個程式
是在執行時將另一個程式
COPY到啟動程序中
小弟是循著路徑拷貝進去
如:c:\documents and settings\all users\開始功能表.....
(2000 NT 中文版)
可是英文版的路徑就不相同了
98 的也不相同
該如何COPY過去
才能在每次開啟電腦時
此程式也自動開啟...? TOMMY
------
TOMMY |
scottliou
版主 發表:16 回覆:56 積分:47 註冊:2002-03-14 發送簡訊給我 |
|
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
|
scottliou
版主 發表:16 回覆:56 積分:47 註冊:2002-03-14 發送簡訊給我 |
只要在
HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Microsoft\Windows\CurrentVersion\Run
這兩個位置加入程式執行位置的機碼那麼Windows開機時系統會自動執行
Ex.
加入字串名稱 AudioMixer
資料輸入 c:\program files\AudioMixer\AudioMixer.exe (程式位置)
即可 如果不知道如何加入Register時請再Post上來我有寫關於Register的函數我再上傳或Mail給你 ~~~~~~~~~~~~~~~~
有夢想最美......
------
~~~~~~~~~~~~~~~~ 有夢想最美...... |
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 請問前輩們.... 是否有使用過貴站的' TAudioMixer '元件? 是控制音量的元件 雖然很方便很簡單使用 不過在XP上無法動作 原因是在XP上執行 TAudioMixer 便會將音量設在靜音 請問各位前輩是否有辦法可以克服 或是有其他的元件可以推薦小弟替代試看看這個控制音量的程式碼 (直接覆製貼上至Delphi就會有縮排) unit Volume; interface uses windows,mmsystem; type Tvolume=record left,right:word; // end; procedure fillstruct(control:PMixerControl;var Cdetails:tMIXERCONTROLDETAILS); function getpeak(control:PMixerControl;var peak:integer):boolean; function setvolume(control:Pmixercontrol; volume:Tvolume):boolean; function getvolume(control:Pmixercontrol; volume:Tvolume):boolean; var mcontrols:array of array of array of PMixerControl; fmixerhandle:HMIXER; implementation procedure fillstruct(control:PMixerControl;var Cdetails:tMIXERCONTROLDETAILS); begin Cdetails.cbStruct:=sizeof(cdetails); cdetails.dwControlID:=Control.dwControlID; cdetails.cbDetails:=sizeof(integer); cdetails.hwndOwner:=0; end; function getpeak(control:PMixerControl;var peak:integer):boolean; var details:TMixerControlDetailsSigned; cdetails:tMIXERCONTROLDETAILS; begin Result:=false; if control.dwControlType<> mixercontrol_controltype_peakmeter then exit; cdetails.cChannels:=1; cdetails.paDetails:=@details; fillstruct(control,cdetails); result:=mixerGetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; end; function setvolume(control:Pmixercontrol; volume:Tvolume):boolean; var details:array[0..30] of integer; cdetails:tMIXERCONTROLDETAILS; begin fillstruct(control,cdetails); cdetails.cChannels:=2; cdetails.paDetails:=@details; details[0]:=volume.left; details[1]:=volume.right; result:=mixerSetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; volume.left:=details[0]; volume.right:=details[1]; end; function getvolume(control:Pmixercontrol; volume:Tvolume):boolean; var details:array[0..30] of integer; cdetails:tMIXERCONTROLDETAILS; begin fillstruct(control,cdetails); cdetails.cChannels:=2; cdetails.paDetails:=@details; result:=mixerGetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; volume.left:=details[0]; volume.right:=details[1]; end; end. procedure TForm1.Button1Click(Sender: TObject); var s : Tvolume; kz : Pmixercontrol; begin new(kz); kz.dwControlID := 0; s.left := 0; s.right := 0; try setvolume(kz,s); except end; freemem(kz); end; ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
引言: 只要在 HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Microsoft\Windows\CurrentVersion\Run 這兩個位置加入程式執行位置的機碼那麼Windows開機時系統會自動執行 Ex. 加入字串名稱 AudioMixer 資料輸入 c:\program files\AudioMixer\AudioMixer.exe (程式位置) 即可 如果不知道如何加入Register時請再Post上來我有寫關於Register的函數我再上傳或Mail給你 ~~~~~~~~~~~~~~~~ 有夢想最美......感謝~ 不過我該如何加入程式執行位置的機碼 從何處加入 例如我要在每次開機時執行c:\program files\FB\FB.exe 麻煩您再指導一次.... 小弟也不知道如何加入Register耶~ TOMMY
------
TOMMY |
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
引言:直接貼上去就ok了嗎?? 小弟試不出來耶~ 會出現錯誤訊息 error in module unit1:declaration of class Tform1 is missing or incorrect. 還是我哪裡又搞錯了?? TOMMY引言: 請問前輩們.... 是否有使用過貴站的' TAudioMixer '元件? 是控制音量的元件 雖然很方便很簡單使用 不過在XP上無法動作 原因是在XP上執行 TAudioMixer 便會將音量設在靜音 請問各位前輩是否有辦法可以克服 或是有其他的元件可以推薦小弟替代試看看這個控制音量的程式碼 (直接覆製貼上至Delphi就會有縮排) unit Volume; interface uses windows,mmsystem; type Tvolume=record left,right:word; // end; procedure fillstruct(control:PMixerControl;var Cdetails:tMIXERCONTROLDETAILS); function getpeak(control:PMixerControl;var peak:integer):boolean; function setvolume(control:Pmixercontrol; volume:Tvolume):boolean; function getvolume(control:Pmixercontrol; volume:Tvolume):boolean; var mcontrols:array of array of array of PMixerControl; fmixerhandle:HMIXER; implementation procedure fillstruct(control:PMixerControl;var Cdetails:tMIXERCONTROLDETAILS); begin Cdetails.cbStruct:=sizeof(cdetails); cdetails.dwControlID:=Control.dwControlID; cdetails.cbDetails:=sizeof(integer); cdetails.hwndOwner:=0; end; function getpeak(control:PMixerControl;var peak:integer):boolean; var details:TMixerControlDetailsSigned; cdetails:tMIXERCONTROLDETAILS; begin Result:=false; if control.dwControlType<> mixercontrol_controltype_peakmeter then exit; cdetails.cChannels:=1; cdetails.paDetails:=@details; fillstruct(control,cdetails); result:=mixerGetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; end; function setvolume(control:Pmixercontrol; volume:Tvolume):boolean; var details:array[0..30] of integer; cdetails:tMIXERCONTROLDETAILS; begin fillstruct(control,cdetails); cdetails.cChannels:=2; cdetails.paDetails:=@details; details[0]:=volume.left; details[1]:=volume.right; result:=mixerSetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; volume.left:=details[0]; volume.right:=details[1]; end; function getvolume(control:Pmixercontrol; volume:Tvolume):boolean; var details:array[0..30] of integer; cdetails:tMIXERCONTROLDETAILS; begin fillstruct(control,cdetails); cdetails.cChannels:=2; cdetails.paDetails:=@details; result:=mixerGetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; volume.left:=details[0]; volume.right:=details[1]; end; end. procedure TForm1.Button1Click(Sender: TObject); var s : Tvolume; kz : Pmixercontrol; begin new(kz); kz.dwControlID := 0; s.left := 0; s.right := 0; try setvolume(kz,s); except end; freemem(kz); end; ~~~Delphi K.Top討論區站長~~~
------
TOMMY |
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
引言: ~~~Delphi K.Top討論區站長~~~直接貼上去就ok了嗎?? 小弟試不出來耶~ 會出現錯誤訊息 error in module unit1:declaration of class Tform1 is missing or incorrect. 還是我哪裡又搞錯了?? 不知道各位前輩是否有使用過'TAudio'元件 它可以在XP內執行 功能一切正常,沒有問題 不過.... 再加入這個元件時竟然無法關機 快.....救......救......我.....ㄚ [/quote] TOMMY
------
TOMMY |
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
這段程式我忘了從那來的
我已改好可run
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,mmsystem; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type Tvolume=record left,right:word; end ; var Form1: TForm1; procedure fillstruct(control:PMixerControl;var Cdetails:tMIXERCONTROLDETAILS); function getpeak(control:PMixerControl;var peak:integer):boolean; function setvolume(control:Pmixercontrol; volume:Tvolume):boolean; function getvolume(control:Pmixercontrol; volume:Tvolume):boolean; implementation {$R *.DFM} var mcontrols:array of array of array of PMixerControl; fmixerhandle:HMIXER; procedure fillstruct(control:PMixerControl;var Cdetails:tMIXERCONTROLDETAILS); begin Cdetails.cbStruct:=sizeof(cdetails); cdetails.dwControlID:=Control.dwControlID; cdetails.cbDetails:=sizeof(integer); cdetails.hwndOwner:=0; end; function getpeak(control:PMixerControl;var peak:integer):boolean; var details:TMixerControlDetailsSigned; cdetails:tMIXERCONTROLDETAILS; begin Result:=false; if control.dwControlType<> mixercontrol_controltype_peakmeter then exit; cdetails.cChannels:=1; cdetails.paDetails:=@details; fillstruct(control,cdetails); result:=mixerGetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; end; function setvolume(control:Pmixercontrol; volume:Tvolume):boolean; var details:array[0..30] of integer; cdetails:tMIXERCONTROLDETAILS; begin fillstruct(control,cdetails); cdetails.cChannels:=2; cdetails.paDetails:=@details; details[0]:=volume.left; details[1]:=volume.right; result:=mixerSetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; volume.left:=details[0]; volume.right:=details[1]; end; function getvolume(control:Pmixercontrol; volume:Tvolume):boolean; var details:array[0..30] of integer; cdetails:tMIXERCONTROLDETAILS; begin fillstruct(control,cdetails); cdetails.cChannels:=2; cdetails.paDetails:=@details; result:=mixerGetControlDetails(fmixerhandle,@cdetails,MIXER_GETCONTROLDETAILSF_VALUE)=0; volume.left:=details[0]; volume.right:=details[1]; end; procedure TForm1.Button1Click(Sender: TObject); var s : Tvolume; kz : Pmixercontrol; begin new(kz); kz.dwControlID := 0; s.left := 0; s.right := 0; try setvolume(kz,s); except end; freemem(kz); end; end.但好像無效果喔! 您先試試! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
再來一段
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, mmsystem; type TForm1 = class(TForm) TrackBar1: TTrackBar; TrackBar2: TTrackBar; TrackBar3: TTrackBar; procedure TrackBar1Change(Sender: TObject); procedure TrackBar2Change(Sender: TObject); procedure TrackBar3Change(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} // Wave音量 procedure TForm1.TrackBar1Change(Sender: TObject); var t,v:Longint; begin // if a=0 then Exit; t:=TrackBar1.Position; v:=(t shl 8)or(t shl 24); waveOutSetVolume(0,v); end; //左聲道 procedure TForm1.TrackBar2Change(Sender: TObject); var t,v:Longint; begin t:=TrackBar2.Position; waveOutGetVolume(0,@v); v:=v and $ffff0000 or (t shl 8); waveOutSetVolume(0,v); end; //右聲道 procedure TForm1.TrackBar3Change(Sender: TObject); var t,v:Longint; begin t:=TrackBar3.Position; waveOutGetVolume(0,@v); v:=v and $0000ffff or (t shl 24); waveOutSetVolume(0,v); end; //取得目前音量值 procedure TForm1.FormCreate(Sender: TObject); var v:longint; begin waveOutGetVolume(0,@v); TrackBar2.Position:=hi(v); TrackBar3.Position:=hi(v shr 16); if hi(v)>hi(v shr 16) then TrackBar1.Position:=hi(v) else TrackBar1.Position:=hi(v shr 16); end; end.這次好像可以喔! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
|
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
引言: 相當感謝!! 已經可以調音量了 不過...好像只可以調音波那一欄耶 如果我要調主音量或cd音量 要怎麼改ㄚ? 天使站長.感謝你又一次解救我.... TOMMY SORRY 又再次打擾您了 不好意思~ 小弟已經收到您寄的檔案了 前幾天去了南部昨晚才看到 試了一下..... 編輯程式都沒有問題 可是執行的時候會出現這個錯誤訊息: projectproject1.exe raised exception class EOutOFResources with message 'unable to inserta line'. process stopped 然後就不能執行了.請問我又哪裡出錯啦!? 剛剛又用了另一台電腦試了一下 程式從編輯到執行都沒有錯誤訊息 不過就是抓不到音量.無法調整!!TOMMY 發表人 - tommy 於 2002/06/25 11:44:09
------
TOMMY |
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
jauds
一般會員 發表:1 回覆:3 積分:0 註冊:2003-06-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |