【问题标题】:Using Windows 7 Taskbar progress indicator from a Windows Explorer namespace extension使用 Windows Explorer 命名空间扩展中的 Windows 7 任务栏进度指示器
【发布时间】:2010-10-20 13:53:19
【问题描述】:

我有一个命名空间扩展,当用户执行某些操作时,我们会在单独的窗口中显示一个进度条(理想情况下,我们应该在地址栏中使用 Windows Explorer 内置的进度指示器,但我被告知没有我的组件供应商提供的 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);
            }
        }
    }
...

我希望资源管理器图标显示进度,但这不会发生。我尝试将 Handle 属性添加为参数,但这似乎没有帮助。

【问题讨论】:

    标签: .net winforms windows-7 explorer


    【解决方案1】:

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

    如果它是一个命名空间扩展,您应该使用 IProgressDialog 接口,它内置在资源管理器中,并且原生支持 Windows 7 上的任务栏进度指示器。

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

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

    dmex

    【讨论】:

    • 感谢您的提示。你知道在Win7上是否有可能获得Windows资源管理器地址栏的进度指示?
    【解决方案2】:

    你设置了状态吗?

    TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Error);
    

    那会给你一个红色的。暂停为黄色,正常为绿色。

    【讨论】:

    • 是的 - 我确实在进度开始到 TaskbarProgressBarState.Normal 时对其进行了初始化。
    猜你喜欢
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2013-07-10
    • 1970-01-01
    • 2011-01-11
    • 2010-11-20
    相关资源
    最近更新 更多