私のプログラムのインストールが終了すると、ビデオ再生ボリュームを徐々に下降するコードを書きました。私は徐々に量を減らすことを期待して、私はよく、ログに-1 , -2 ... -10000
ようにそれを見ることができるように上記のコードInno Setupで徐々にTDirectShow Player(Inno Media Player)の音量を下げます
procedure CurPageChanged(CurPageID: Integer);
var
X: Integer;
begin
...
if CurPageID = wpFinished then
begin
VideoHandler.Release;
VideoHandler.Close;
DSSetVolume(-0);
X := 0;
repeat
DSSetVolume(X);
Log(IntToStr(X));
X = X - 1;
until X = -10000;
DSStopMediaPlay;
...
end;
...
end;
は、X値を出力します。この繰り返し処理が開始される。しかし、
WizardForm
が正常に表示されますが、何もそのwpFinished
ページに表示されていません。空のフォームのみが表示されます。WizardForm.Caption
以外のフォームには何も描画されていません。繰り返し処理(ループ)が終了するまでフリーズ動作をします。ボリュームは、通常、または徐々に降順に減少しません。また、通常示すループが終了し、ログ出力
-10000
、WizardForm
ディスプレイ通常、ページ後。
DSStopMediaPlay
に設定されているため、音量が突然停止します。
どのように私は、任意の凍結や例外なく正常に上記のプロセス(動画再生音の段階的な削減)を行うことができますか?ユーザーのシステムサウンドは、Windowsでのサウンドコントロールパネルの20%
に設定されている場合
UPDATE
次のコードは、最良の結果を与えることができます。量を減らす
procedure VolumeFadeTimerProc(HandleW, msg, idEvent, TimeSys: LongWord);
begin
MPEGVideoVolume := MPEGVideoVolume - 15;
if MPEGVideoVolume < -4000 then
begin
DSStopMediaPlay;
KillTimer(0, TimerID);
KillTimer(0, VolumeFadeTimer);
Log('Volume Fade Timer has been reset.');
end
else
begin
Log('MPEG Video Volume has been set to: ' + IntToStr(MPEGVideoVolume));
DSSetVolume(MPEGVideoVolume);
end;
end;
ボリュームは、ボリュームの量を減らす15
最大は、次のコード-4000
ですユーザのシステムサウンドがサウンドコントロールパネルの中100%
に設定されている場合、最良の結果を与えることができますWindows。
procedure VolumeFadeTimerProc(HandleW, msg, idEvent, TimeSys: LongWord);
begin
MPEGVideoVolume := MPEGVideoVolume - 35;
if MPEGVideoVolume < -10000 then
begin
DSStopMediaPlay;
KillTimer(0, TimerID);
KillTimer(0, VolumeFadeTimer);
Log('Volume Fade Timer has been reset.');
end
else
begin
Log('MPEG Video Volume has been set to: ' + IntToStr(MPEGVideoVolume));
DSSetVolume(MPEGVideoVolume);
end;
end;
ボリュームの削減額は35
最大体積減少量が-10000
が、私は自動的にユーザーのシステムサウンドセットの量に応じて量を減らすボリュームと最大体積減少を変更する必要がありますですに?
ありがとうございます。
私は '私は' SetTimer'を忘れてしまった理由ですInnoCallback.dll'を忘れてしまった......ありがとう..........私は削減量(速度)を調整する必要がある場合プログラムのインストーラのユーザーのPC /ラップトップのシステムサウンドに応じて自動的に音量と最大音量を自動的に調整します。 – Blueeyes789
私は 'DSSetVolume'の議論が本当に何をしているのか分かりません。 –
これもExample Scriptで読んでいて、 'DSSetVolume' musch ... ;--( – Blueeyes789