首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从任务栏隐藏控制台C++程序

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

Stack Overflow用户
提问于 2013-04-15 15:58:53
回答 2查看 6.4K关注 0票数 7

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-15 20:14:15

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

代码语言:javascript
运行
复制
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();
}
票数 7
EN

Stack Overflow用户

发布于 2013-04-16 18:51:42

多亏了Obvlious船长和一些研究,下面的代码如下:

代码语言:javascript
运行
复制
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,工作就很棒了!

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16019650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档