SetProgressValue() 在 ConEmu 中不起作用

SetProgressValue() not working within ConEmu

本文关键字:不起作用 ConEmu SetProgressValue      更新时间:2023-10-16

我们开发了一个控制台应用程序,它使用的方法ITaskbarList3::SetProgressValue()当该应用程序在cmd中调用时工作正常.exe但在控制台中调用时Conemu它不会显示任何进度。任何地方也不会发生错误消息。作为ITaskbarList3::SetProgressValue()参数传递的HWND如下所示:

HWND hwnd = GetConsoleWindow();

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

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

只需在致电SetProgressValue()之前获取GetConsoleWindow()的父母即可。