c#任务栏进度条,从Windows Media Player currentMedia.currentPosition获取值

时间:2015-09-02 21:48:59

标签: c# winforms windows-media-player windows-api-code-pack

我试图通过以下方式获得价值,但这并不起作用:

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);
    }

1 个答案:

答案 0 :(得分:1)

后台工作者只会更新一次进度。我希望您需要放入一个while循环或一个计时器来在播放曲目时重复更新进度。