1

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

在此处输入图像描述

我的应用程序当前显示我的应用程序名称。我想把它改成微软产品的样子

在此处输入图像描述

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

4

2 回答 2

8

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

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

在此处输入图像描述

在此处输入图像描述

于 2012-10-03T15:47:36.777 回答
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");
}

有关完整示例,请参见此处

于 2012-10-03T15:41:23.380 回答