У меня есть немного приставка игра, которая вызывает другое консольное приложение. Что-то вроде Winampмного окон (главный а также плейлист). Дело в том, что когда я вызываю два, например, окна консоли, программы, открытые в Панель задач слишком много, мне не нужно открывать окна отдельно, я хочу только главный окно, чтобы остаться в панели задач, и когда я нажимаю на нее, Это а также все его дочерние приложения всплывать.
Постскриптум Я знаком с ShowWindow ( GetConsoleWindow(), SW_HIDE );
, но оно также скрывает окно, и я хочу, чтобы оно было скрыто только от панели задач.
Единственный способ выполнить это в окне консоли — использовать интерфейс оболочки. 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();
}
Спасибо капитану 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!