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

我有一个控制台游戏,调用另一个控制台应用程序。 像Winamp的许多窗口( 主要播放列表 )。 事情是,当我打电话给两个例如控制台窗口在任务栏打开的程序得到太多,我不需要单独打开窗户,我只想窗口留在任务栏,当我点击它, 它的 所有子应用程序popup。

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

Solutions Collecting From Web of "从任务栏隐藏控制台C ++程序"

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

感谢Captain 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作为initRetcreateRet的值!