SetProgressValue() 在 ConEmu 中不起作用

SetProgressValue() not working within ConEmu

我们开发了一个控制台应用程序,它使用 ITaskbarList3::SetProgressValue() method that works fine when that application is invoked within cmd.exe but it doesn't show any progress when invoked within Conemu console. No error messages happens anywhere either. The HWND passed as parameter of ITaskbarList3::SetProgressValue() 是这样的:

HWND hwnd = GetConsoleWindow();

我没有要显示的代码,因为我不知道执行此操作的替代方法或可能存在的问题。我认为返回的 HWND 可能是 conemu 而不是我的应用程序,所以我调用了 GetWindowText() 函数来检查 window 的文本是否不是我的控制台应用程序,但它是一个与 cmd 格式相同的字符串。

当您 运行 ConEmu 中的控制台应用程序时,GetConsoleWindow() returns 虚拟控制台 HWND 而不是本机 conhost HWND。然而,两者都适合 SetProgressValue() 因为虚拟控制台是 ConEmu 的子 window(显示在任务栏上)并且 conhost HWND 甚至不可见。

在调用 SetProgressValue() 之前获取 GetConsoleWindow() 的父级。