从任务栏隐藏控制台c++程序

Hide A Console C++ Program From Taskbar

本文关键字:c++ 程序 控制台 隐藏 任务栏      更新时间:2023-10-16

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

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

多亏了Captain obvous和一些研究,下面的代码:

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作为值!

我知道在控制台窗口上完成此操作的唯一方法是使用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();
}