【问题标题】:c# Taskbar Progress Bar, getting value from Windows Media Player currentMedia.currentPositionc#任务栏进度条,从Windows Media Player currentMedia.currentPosition中获取值
【发布时间】:2015-09-02 21:48:59
【问题描述】:

我试图通过以下方式获取价值,但没有奏效:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 将 SetProgressValue 放入循环后,仍然没有任何反应。顺便说一句,当我在一小时前编写初始代码时,我不知道自己在想什么。从外观上看,我很确定“val”是不稳定的,而 backgroundWorker2 是自动循环的。我决定暂时不使用该功能,但感谢您注意到代码中的错误。
    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2014-06-05
    相关资源
    最近更新 更多