2013-04-15 16 views
5

Ich habe eine kleine Konsole Spiel, das eine andere Konsole App aufruft. Etwas wie Winamp 's viele Fenster (Haupt und Wiedergabeliste). Die Sache ist, wenn ich zwei zum Beispiel Konsole Fenster die Programme in der Taskleiste geöffnet zu viele, ich brauche nicht die Fenster separat öffnen, möchte ich nur die Haupt Fenster in der Taskleiste bleiben und wenn ich Klicken Sie darauf, es und alle seine Kind-Apps zu Pop-up.Ausblenden einer Konsole C++ - Programm von der Taskleiste

P.S. Ich bin vertraut mit ShowWindow (GetConsoleWindow(), SW_HIDE);, aber es verbirgt das Fenster auch und ich will es nur aus der Taskleiste versteckt werden.

Antwort

5

Die einzige Möglichkeit, dies in einem Konsolenfenster zu erreichen, ist die Verwendung der Shell-Schnittstelle 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

Dank Kapitän Obvlious und einige der Forschung, den folgenden Code:

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(); 

mit inbegriffen ShObjIdl.h funktioniert super!

Hinweis: Sie sollten S_OK als Wert in initRet und createRet bekommen!

+0

+1 Eine gute Lösung, um eine Lösung zu finden. –

Verwandte Themen