Windows 7 任务栏进度在一个应用程序中有效,但在另一个应用程序中无效

Windows 7 taskbar progress works in one app but not another

我有两个不同的应用程序,都是用 C Builder 2009 编写的本机应用程序,都是 MDI,并且都使用相同的进度条实用程序代码。其中之一正确更新了 Windows 7 任务栏的进度。另一个没有。

我找不到这两个应用程序之间的任何明显差异。在失败的应用程序中没有报告错误:对 ITaskbarList3::SetProgressValueITaskbarList3::SetProgressState 的调用返回 S_OK,但在 Windows 7 任务栏中没有任何反应。

在使 Windows 7 任务栏进度条正常工作方面有什么问题吗?我可能缺少任何要求吗?


我的问题可能是 Delphi/C Builder 特有的,是 VCL 处理其顶级窗口的方式不同的结果。

如果 Application.MainFormOnTaskBar 为真,则 ITaskbarList3 仅在 Application.MainFormHandle 用作 HWND 参数时才有效。

如果 Application.MainFormOnTaskBar 为假,则 ITaskbarList3 仅在 Application.Handle 用作 HWND 参数时才有效。

在我的例子中,一个项目 MainFormOnTaskBar 为真,一个项目为假。


我没有专门使用 Windows 7 进度条编写应用程序,但我编写了许多需要使用实时动画更新进度的 .Net 应用程序,而我的经验中最大的问题是确保您正在更新进度条主线程。