Windows — Скрыть консольную программу C ++ из панели задач

У меня есть немного приставка игра, которая вызывает другое консольное приложение. Что-то вроде Winampмного окон (главный а также плейлист). Дело в том, что когда я вызываю два, например, окна консоли, программы, открытые в Панель задач слишком много, мне не нужно открывать окна отдельно, я хочу только главный окно, чтобы остаться в панели задач, и когда я нажимаю на нее, Это а также все его дочерние приложения всплывать.

Постскриптум Я знаком с ShowWindow ( GetConsoleWindow(), SW_HIDE );, но оно также скрывает окно, и я хочу, чтобы оно было скрыто только от панели задач.

7

Решение

Единственный способ выполнить это в окне консоли — использовать интерфейс оболочки. 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();
}
6

Другие решения

Спасибо капитану 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!

8

По вопросам рекламы [email protected]