【问题标题】:Change application name shown in Win7 taskbar更改 Win7 任务栏中显示的应用程序名称
【发布时间】:2012-10-03 15:36:35
【问题描述】:

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

我的应用程序当前显示我的应用程序名称。我想把它改成类似微软产品的东西

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

【问题讨论】:

  • 请告诉我你的Assembly.cs 中有什么。
  • 你的应用还是你的跳转任务?

标签: c# wpf prism taskbar


【解决方案1】:

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

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

【讨论】:

  • 我知道了,我想动态设置。我没有在我的问题中解释过相同的编辑。
  • 哦,这是一个完全不同的问题。好吧,我想我当时是在浪费时间制作所有这些漂亮的屏幕截图。
  • Word 不会动态更改这一点。我实际上认为我回答了你提出的问题。我想你问错问题了!!
  • puu.sh/sxnyQ/374f8b35b3.png 详细说明了我已更改的所有内容,但快捷方式在 Windows 10 中保持不变
【解决方案2】:

对于通过 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

【讨论】:

    猜你喜欢
    • 2021-04-20
    • 2016-05-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多