从Windows资源管理器命名空间扩展中使用Windows 7任务栏进度指示器

时间:2010-10-20 13:53:19

标签: .net winforms windows-7 explorer

我有一个名称空间扩展名,当用户执行某些操作时,我们会在一个单独的窗口中显示一个进度条(理想情况下,我们应该使用地址栏中的Windows资源管理器内置进度指示器,但我被告知有没有'来自我的组件供应商的API)。我使用Windows Code Pack 1.1来获取.NET API。

此进度窗口是常规Windows窗体窗口。我已经包含以下代码:

...
using System.Windows.Forms;
using Microsoft.WindowsAPICodePack.Taskbar;
...
public sealed partial class ProgressWindow : Form, IProgressPresenter
{
    ...
    public int ProgressLevel
    {
        get { return JobProgress.Value; }
        set
        {
            JobProgress.Value = value;

            if (TaskbarManager.IsPlatformSupported)
            {
                TaskbarManager.Instance.SetProgressValue(value, 99);
            }
        }
    }
...

我希望Explorer图标显示进度,但这不会发生。我试图添加 Handle 属性作为参数,但这似乎没有帮助。

2 个答案:

答案 0 :(得分:0)

你设置了状态吗?

TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Error);

那会让你变红。暂停为黄色,正常为绿色。

答案 1 :(得分:0)

  

(理想情况下,我们应该使用Windows   Explorer内置进度指示器   在地址栏,但我被告知   我没有那个API   组件供应商)

如果它是一个名称空间扩展你应该使用IProgressDialog接口,它内置于资源管理器中,而且nativity支持Windows 7上的任务栏进度指示器。

http://www.codeproject.com/KB/dotnet/winprogressdialog.aspx

http://www.codeproject.com/KB/shell/iprogressdialognet.aspx

dmex