c#任务栏进度条,从Windows Media Player中获取值
本文关键字:Player Media 获取 Windows 任务栏 | 更新日期: 2023-09-27 18:11:06
我试图以以下方式获取值,这不起作用:
private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
axWindowsMediaPlayer1.Ctlcontrols.play();
axWindowsMediaPlayer1.Ctlcontrols.currentItem =
axWindowsMediaPlayer1.currentPlaylist.Item[listBox1.SelectedIndex];
backgroundWorker2.RunWorkerAsync();
}
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
double val = 100*axWindowsMediaPlayer1.Ctlcontrols.currentPosition/axWindowsMediaPlayer1.currentMedia.duration;
TaskbarManager.Instance.SetProgressValue((int)val,100);
}
我也不确定,我该把停止进度的线放在哪里,但我想现在考虑它有点早,因为我无论如何都无法使进度工作。
是问题在我如何使用backgroundWorker或在我如何更新值,或其他什么?
提前感谢,
~ ~ hlfrmn
编辑:private void TaskbarProgressValueDeterminator()
{
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
while (axWindowsMediaPlayer1.Ctlcontrols.currentPosition < axWindowsMediaPlayer1.currentMedia.duration)
{
TaskbarManager.Instance.SetProgressValue((int)(100 * axWindowsMediaPlayer1.Ctlcontrols.currentPosition / axWindowsMediaPlayer1.currentMedia.duration), 100);
}
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress);
}
后台worker只会更新一次进度。我希望你需要放入一个while循环或计时器,以便在播放曲目时反复更新进度。