我有一个小控制台游戏,它调用另一个控制台应用程序。类似于Winamp的许多窗口(主窗口和播放列表)。问题是,当我调用两个控制台窗口--例如,在任务栏中打开的程序太多--时,我不需要单独打开窗口,我只希望主窗口留在任务栏中,当我单击它时,它和上的所有子应用程序都会弹出。
我很熟悉ShowWindow ( GetConsoleWindow(), SW_HIDE );
,但它也隐藏了窗口,我希望它只对任务栏隐藏。
发布于 2013-04-15 20:14:15
我知道在控制台窗口上完成此操作的唯一方法是使用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();
}
发布于 2013-04-16 18:51:42
多亏了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
,工作就很棒了!
注意:您应该将S_OK作为initRet和createRet中的一个值!
https://stackoverflow.com/questions/16019650
复制相似问题