1

Windows 7 のタスクバーのコンテキスト メニューに表示されるアプリケーション名を変更したいと考えています。

ここに画像の説明を入力

現在、私のアプリケーションにはアプリケーション名が表示されています。マイクロソフト製品のようなものに変更したい

ここに画像の説明を入力

私のアプリケーションは Prism フレームワークを使用しており、表示するアプリケーション名はモジュールのタイプによって決まります。そこで、アプリケーション名を動的に設定したいと思います。

4

2 に答える 2

8

vshost32.exeデバッガーで実行しているため、表示されています。これは、デバッガーが使用するホスト プロセスの名前にすぎず、変更することはできません。まあ、できるとは思いますが、それはあなたがやりたいことではありません。実行可能ファイルで使用される名前を変更したい。

ユーザーが行うように、デバッグなしで実行すると、タスクバー アプリのポップアップに表示されるアプリケーション名は、プロジェクト構成の [アプリケーション] ページで指定されたアセンブリ名によって決定されます。それで、それをあなたが望むものに変更するだけで、それ以上何もする必要はありません.

ここに画像の説明を入力

ここに画像の説明を入力

于 2012-10-03T15:47:36.777 に答える
1

Windows API コード パック ライブラリを介してそのプロパティを設定するマネージド アプリでは、名前空間で見つけることができるオブジェクトAppIDの一部であるプロパティを使用できます。そのプロパティを使用して、特定のアプリケーションのアプリケーション ID を設定および取得できます。TaskbarMicrosoft.WindowsAPICodePack.Shell.Taskbar

手動で設定することもできます (パックを使用しない場合)。ID を使用して name 設定を設定するだけです。

void SetAppID(HWND hWnd, int iAppID)
{
    IPropertyStore *pps;
    HRESULT hr = SHGetPropertyStoreForWindow(hWnd, IID_PPV_ARGS(&pps));
    if (SUCCEEDED(hr))
    {
        PROPVARIANT pv;
        if (iAppID >= 0)
        {
            hr = InitPropVariantFromString(c_rgszAppID[iAppID], &pv);
        }
        else
        {
            PropVariantInit(&pv);
        }
        if (SUCCEEDED(hr))
        {
            hr = pps->SetValue(PKEY_AppUserModel_ID, pv);
            PropVariantClear(&pv);
        }
        pps->Release();
    }
}

そして、次のように呼び出します。

private static void SetWindowAppId(string appId)
{
    Microsoft.WindowsAPICodePack.Shell.ShellNativeMethods.SetWindowAppId
        (OwnerHandle, "the name you want to display here");
}

完全な例については、こちらを参照してください。

于 2012-10-03T15:41:23.380 に答える