2013-04-15 43 views
5

Tôi có một số ít bảng điều khiển trò chơi gọi một ứng dụng bảng điều khiển khác. Một cái gì đó giống như Nhiều cửa sổ của Winamp (chínhdanh sách phát). Vấn đề là khi tôi gọi hai ví dụ cửa sổ điều khiển các chương trình được mở trong thanh tác vụ quá nhiều, tôi không cần mở cửa sổ riêng, tôi chỉ muốn cửa sổ chính để ở trên thanh tác vụ và khi tôi bấm vào nó, tất cả các ứng dụng con của nó để bật lên.Ẩn chương trình điều khiển C++ từ thanh tác vụ

P.S. Tôi quen thuộc với ShowWindow (GetConsoleWindow(), SW_HIDE);, nhưng nó ẩn cửa sổ là tốt và tôi muốn nó được ẩn chỉ từ thanh tác vụ.

Trả lời

5

Cách duy nhất tôi biết để thực hiện điều này trên cửa sổ bảng điều khiển là sử dụng giao diện vỏ 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

Nhờ Captain Obvlious và một số nghiên cứu, đoạn code sau:

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

với bao gồm ShObjIdl.h hoạt động tuyệt vời!

Lưu ý: Bạn sẽ nhận được S_OK như một giá trị trong initRetcreateRet!

+0

+1 Rất tốt khi tiếp cận giải pháp. –

Các vấn đề liên quan