【问题标题】:Hide A Console C++ Program From Taskbar从任务栏中隐藏控制台 C++ 程序
【发布时间】:2013-04-15 15:58:53
【问题描述】:

我有一个调用另一个控制台应用程序的 控制台 小游戏。类似于 Winamp 的许多窗口(mainplaylist)。问题是当我调用两个例如控制台窗口时,在 taskbar 中打开的程序太多了,我不需要单独打开窗口,我只想要 ma​​in 窗口停留在任务栏中,当我点击它时,it其所有子应用程序 会弹出。

附:我熟悉ShowWindow ( GetConsoleWindow(), SW_HIDE );,但它也隐藏了窗口,我希望它只从任务栏中隐藏。

【问题讨论】:

    标签: c++ windows taskbar


    【解决方案1】:

    感谢上尉 Obvlious 和一些研究,以下代码:

    ITaskbarList *pTaskList = NULL;
    HRESULT initRet = CoInitialize(NULL);
    HRESULT createRet = CoCreateInstance( CLSID_TaskbarList,
                                          NULL,
                                          CLSCTX_INPROC_SERVER,
                                          IID_ITaskbarList,
                                          (LPVOID*)&pTaskList );
    
    if(createRet == S_OK)
    {
    
        pTaskList->DeleteTab(GetConsoleWindow());
    
        pTaskList->Release();
    }
    
    CoUninitialize();
    

    包含ShObjIdl.h 效果很好!

    注意:您应该在 initRetcreateRet 中将 S_OK 作为一个值!

    【讨论】:

      【解决方案2】:

      我知道在控制台窗口上完成此操作的唯一方法是使用 shell 接口 ITaskbarList

      hr = CoCreateInstance(
          CLSID_TaskbarList,
          NULL,
          CLSCTX_INPROC_SERVER,
          IID_ITaskbarList,
          reinterpret_cast<void**>(&taskbar));
      if(!FAILED(hr))
      {
          // Remove the icon from the task bar
          taskbar->DeleteTab(GetConsoleWindow());
          // Release it
          taskbar->Release();
      }
      

      【讨论】:

        猜你喜欢
        • 2017-12-19
        • 2010-12-08
        • 1970-01-01
        • 2012-01-04
        • 2015-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        相关资源
        最近更新 更多