Windows10 タスクバー DESKBAND(デスクバンド)の管理・削除 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(概要)
(概要)
8行: 8行:
  
 
 正直、知っている人は少ないと思う。これが割かし新しい技術でありながら、しょぼい仕組みになっていて、消せない無効領域を作り出したりすることがあります。ToolBarの表示・非表示を切り替えたりすると追加したアプリが管理できない状態に変化させたりして領域を壊したりもします。消せなくなったDESKBANDを消す方法をここでは、追及したいと思います。できればレジストリの仕組みまで究明できたらなと思います。
 
 正直、知っている人は少ないと思う。これが割かし新しい技術でありながら、しょぼい仕組みになっていて、消せない無効領域を作り出したりすることがあります。ToolBarの表示・非表示を切り替えたりすると追加したアプリが管理できない状態に変化させたりして領域を壊したりもします。消せなくなったDESKBANDを消す方法をここでは、追及したいと思います。できればレジストリの仕組みまで究明できたらなと思います。
 +
 +
 +
== '''デスクバンド一覧取得API''' ==
 +
 パソコンに導入されているDESKBANDの一覧を取得するAPIの使い方は以下の通りです。
 +
 +
<syntaxhighlight2 lang="cpp">
 +
    HRESULT  hr;
 +
    DWORD    i, dwCount;
 +
    DWORD    dwBandId;
 +
    IPersist* pPersist;
 +
    IBandSite* pBandSite;
 +
    LPOLESTR  lpszClsid;
 +
    CLSID    clsid;
 +
    CLSID    clsidTarget = { 0x112143a6, 0x62c1, 0x4478, {0x9e, 0x8f, 0x87, 0x26, 0x99, 0x25, 0x5e, 0x2e} };
 +
 +
    CoInitialize(NULL);
 +
 +
    hr = CoCreateInstance(CLSID_TrayBandSiteService, NULL, CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&pBandSite));
 +
    //DESKBAND COM インターフェイス初期化 IBandSite型ポインタのpBandSite準備
 +
    if (FAILED(hr)) {
 +
        CoUninitialize();
 +
        return 0;
 +
        //COMインターフェイス初期化失敗なので0を返却、強制終了。
 +
    }
 +
    dwCount = pBandSite->EnumBands(-1, &dwBandId);
 +
    //pBandSiteのメンバ関数EnumBandsで第1引数に-1を設定して総数を取得する。
 +
    //dwCountにはDESKBANDの総数をDWORD値で取得。
 +
    for (i = 0; i < dwCount; i++) {
 +
        //DWORD値を持つiを0から総数までカウントアップ
 +
        pBandSite->EnumBands(i, &dwBandId);
 +
        //i番目のDESKBANDのIDをdwBandIdに設定。
 +
        pBandSite->GetBandObject(dwBandId, IID_PPV_ARGS(&pPersist));
 +
        //IPersist型COMインタフェイスに0~総数番までのDESKBANDオブジェクトを順次格納
 +
        pPersist->GetClassID(&clsid);
 +
        //GUIDをclsid型配列に取得
 +
        pPersist->Release();
 +
    }
 +
</syntaxhighlight2>

2021年8月1日 (日) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス