Windows7有一个很棒的新功能,应用程序可以通过状态栏报告当前活动的进度。例如,使用Windows资源管理器复制文件时,进度条位于任务栏中应用程序图标的顶部,并在更新时显示进度。
显示进度条的API是什么?上面有MSDN文档吗?
发布于 2009-07-18 02:56:53
MSDN杂志上有一篇关于the new taskbar APIs的好文章。是的,这个功能非常棒:-)
从本质上讲,这一切都与实现IFileOperation有关。有一篇关于在托管代码here中使用它的好文章。
发布于 2009-09-07 12:46:34
.NET 4以下版本的,或任何.NET版本中的WinForms
使用微软的Windows API Code Pack (正如基隆提到的),它真的很简单。您只需使用TaskbarManager即可。例如。
要启动进度,请执行以下操作:
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);要更新进度,请执行以下操作:
TaskbarManager.Instance.SetProgressValue(currentValue, maxProgressValue);当你完成的时候,结束这个过程:
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress);你还可以做更多的事情,但这应该是你入门的开始,可能就是你所需要的。
适用于.NET 4及更高版本的,带WPF
您可以使用System.Windows.Shell.TaskbarItemInfo。例如,在主窗口的Xaml中,您需要添加:
<Window.TaskbarItemInfo>
<TaskbarItemInfo x:Name="taskBarItemInfo" />
</Window.TaskbarItemInfo>然后,要更新进度,您可以执行以下操作:
taskBarItemInfo.ProgressState = TaskbarItemProgressState.Normal;
for (int i = 0; i < 100; i++)
{
taskBarItemInfo.ProgressValue = i / 100.0;
Thread.Sleep(50); // whatever the 'work' really is
}
taskBarItemInfo.ProgressState = TaskbarItemProgressState.None;不要忘记,如果你在后台线程上做“工作”(这对于长时间运行的任务来说可能是个好主意),你需要切换回UI线程来更新任务栏。
发布于 2009-08-02 03:18:47
如果你计划使用Windows7任务栏的其他功能,另一种方法是使用微软的库: Windows API Code Pack for .NET Framework,该库在old link上不再可用,但可以在nuget上找到。
https://stackoverflow.com/questions/1146574
复制相似问题