更改Win7任务栏中显示的应用程序名称

时间:2012-10-03 15:36:36

标签: c# wpf prism taskbar

我想更改在Windows 7任务栏上下文菜单中显示的应用程序名称。

enter image description here

我的应用程序目前显示我的应用程序名称。我想把它改成像微软产品那样的东西

enter image description here

我的应用程序使用Prism框架,我想要显示的应用程序名称将决定模块的类型。所以我想动态设置应用程序名称。

2 个答案:

答案 0 :(得分:8)

您看到vshost32.exe,因为您在调试器下运行。这只是调试器使用的主机进程的名称,您无法更改它。好吧,我想你可以,但这不是你想做的。您想要更改可执行文件使用的名称。

当您在没有调试的情况下运行时,您的用户将会在任务栏应用程序弹出窗口中显示的应用程序名称由项目配置的“应用程序”页面中指定的程序集名称确定。所以,只需将其更改为您想要的任何内容,就没有其他事情要做了。

enter image description here

enter image description here

答案 1 :(得分:1)

使用托管应用程序,您可以通过Windows API代码包库设置该属性,您可以使用属于AppID对象的Taskbar属性,您可以在Microsoft.WindowsAPICodePack.Shell.Taskbar中找到该属性命名空间。使用该属性,您可以设置并获取给定应用程序的应用程序ID。

您也可以手动设置(如果不使用包)。只需使用它的ID设置名称设置:

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");
}

有关完整示例,请参阅here