c#任务栏进度栏,从Windows Media Player currentMedia.currentPosition获取值
我试图通过以下方式获得价值,但没有成功:c#任务栏进度栏,从Windows Media Player currentMedia.currentPosition获取值,c#,winforms,windows-media-player,windows-api-code-pack,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.Ctlco
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(taskbarProgressState.Normal);
while(axWindowsMediaPlayer1.Ctlcontrols.currentPosition
后台工作人员只会更新一次进度。我希望在播放曲目时,您需要加入while循环或计时器来重复更新进度。将SetProgressValue放入循环后,仍然不会发生任何事情。顺便说一句,我不知道我在一小时前写初始代码时在想什么。从外观上看,我非常确定“val”是易变的,backgroundWorker2是自动复制的。我决定暂时不使用该功能,但感谢您注意到代码中的错误。
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);
}