当前位置: 首页 > 知识库问答 >
问题:

代码最少的Windows 7任务栏状态

祝英博
2023-03-14

为已知窗口句柄设置Windows7任务栏按钮状态的最短代码是什么?

目标是编写一个控制台实用程序,从批处理脚本更改控制台窗口任务栏项的进度和状态(颜色)。当脚本执行不同的任务时,其控制台窗口的任务栏项应表示当前状态。

我用GetConsoleWindow()函数获得窗口句柄,但它似乎需要大量我不理解的COM和Shell API。我发现的一个例子使用了一个带有MFC的整个GUI应用程序来演示API,但是它的大部分对于我的小工具来说太复杂了,而且我对它的理解不够好,无法删除我不需要的东西。

该工具应该在带有VS2010(C++)的Windows7上编译,但也可以在早期的Windows版本上运行(如果某个功能不可用,则什么也不做)。

共有2个答案

康泽宇
2023-03-14

注您仍然需要调用 来设置消息筛选器,然后 才能工作。

根据MSDN文档,您应该在每次收到创建的消息时重新创建对象,但我发现我只需执行 ,它在正常情况下可以正常工作。

狄玮
2023-03-14

我创建了一个类来一次性为一个项目设置Win7任务栏中的进度。这是我挖出的代码:

#include <shobjidl.h>
#include <windows.h>
#pragma comment(lib, "Shell32.lib")
#pragma comment(lib, "Ole32.lib")

class Win7TaskbarProgress  
{
public:
    Win7TaskbarProgress();
    virtual ~Win7TaskbarProgress();

    void SetProgressState(HWND hwnd, TBPFLAG flag);
    void SetProgressValue(HWND hwnd, ULONGLONG ullCompleted, ULONGLONG ullTotal);

private:
    bool Init();
    ITaskbarList3* m_pITaskBarList3;
    bool m_bFailed;
};

Win7TaskbarProgress::Win7TaskbarProgress()
{
    m_pITaskBarList3 = NULL;
    m_bFailed = false;
}

Win7TaskbarProgress::~Win7TaskbarProgress()
{
    if (m_pITaskBarList3)   
    {
        m_pITaskBarList3->Release();
        CoUninitialize();
    }
}

void Win7TaskbarProgress::SetProgressState( HWND hwnd, TBPFLAG flag )
{
    if (Init())
        m_pITaskBarList3->SetProgressState(hwnd, flag);
}

void Win7TaskbarProgress::SetProgressValue( HWND hwnd, ULONGLONG ullCompleted, ULONGLONG ullTotal )
{
    if (Init())
        m_pITaskBarList3->SetProgressValue(hwnd, ullCompleted, ullTotal);
}

bool Win7TaskbarProgress::Init()
{
    if (m_pITaskBarList3)
        return true;

    if (m_bFailed)
        return false;

    // Initialize COM for this thread...
    CoInitialize(NULL);

    CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList3, (void **)&m_pITaskBarList3);

    if (m_pITaskBarList3)
        return true;

    m_bFailed = true;
    CoUninitialize();
    return false;
}
 类似资料:
  • Visual Studio代码的默认状态栏颜色是蓝色,我发现它非常分散注意力。我使用此扩展来更改颜色,但在更新后它停止工作。

  • Electron有API来配置Windows任务栏中的应用程序图标。 支持的有 创建一个 弹出列表, 自定义缩略图和工具栏, 图标叠加, 和所谓的 "闪烁框" 效果, 而且 Electron 还使用应用程序的 dock 图标来实现跨平台功能 比如 最近文档 和 应用进程. Windows Taskbar Electron has APIs to configure the app's icon i

  • [Settings] NumFields=8 [Field 1] Type=label Text=请选择您想要执行的操作任务和第三方工具,然后单击“下一步”继续安装。 Left=0 Right=-1 Top=0 Bottom=10 [Field 2] Type=label Text=附加任务: Left=0 Right=-1 Top=20 Bottom=30 [Field 3] Type=C

  • 如果我在任务栏中最小化了一个进程,有没有办法从java中最大化它? 我知道这个过程的名字,但有可能吗?

  • 本文向大家介绍Android状态栏白底黑字的示例代码,包括了Android状态栏白底黑字的示例代码的使用技巧和注意事项,需要的朋友参考一下 之前公司项目UI改版的时候,把大部分标题栏都设计成了白色,给我们的设计图是这个样子的: 设计图.png 这状态栏布局和图标挺像Android,但是这白底黑字Android设计规范里可没有啊,于是我们开发的时候果断忽视这个状态栏了(当时大部分用户还都是Andro

  • 功能有向前一个,向后一个,图片切换效果常规就行,带小点导航, 在网上找的代码,如下,目前无法自动开启,自动 开启当鼠标进入图区不暂停,退出不继续,求指教,小白