2013-04-15 2 views
5

콘솔 다른 콘솔 앱을 호출하는 게임이 있습니다. 뭔가 같은 윈앰프 님의 많은 창이 (메인재생 목록). 문제는 콘솔 창이 두 개를 호출 할 때 작업 표시 줄에서 열린 창이 너무 많아서 별도로 창을 열 필요가 없습니다. 메인 창을 작업 표시 줄에 그대로두고 싶습니다. 그것을 클릭하십시오, 모든 하위 애플 리케이션 팝업.콘솔 C++ 프로그램을 작업 표시 줄에서 숨기기

P. ShowWindow (GetConsoleWindow(), SW_HIDE);에 익숙하지만 창을 숨기고 작업 표시 줄에서만 숨길 수도 있습니다.

답변

5

콘솔 창에서이 작업을 수행하는 방법을 알고있는 유일한 방법은 셸 인터페이스 ITaskbarList을 사용하는 것입니다. 선장 Obvlious 일부 연구, 다음 코드

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

감사 : 포함 ShObjIdl.h

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

이 좋은 작품!

참고 : initRetcreateRet의 값으로 S_OK을 얻어야한다!

+0

+1 솔루션을 사용하기에 좋은 순서입니다. –