【问题标题】:i can't see a context menu of WPF windows app through VNC我无法通过 VNC 看到 WPF windows 应用程序的上下文菜单
【发布时间】:2011-02-28 17:29:48
【问题描述】:

我可以打开上下文菜单,但无法通过 VNC 看到打开的菜单列表。 (我知道我可以通过直接检查 vnc 服务器机器来打开上下文菜单) 我在不同的 vnc 服务器/客户端机器(尽管它们都是 windows Vista)和不同的 wpf 应用程序上进行了测试,但我仍然看不到任何菜单列表。

这是报告的问题吗?我找到了一些与 windows 桌面有关的 wpf 问题的信息,但我不知道 vnc。

添加:我在我的 vnc 环境下的 windows 本机应用程序或 windows 窗体应用程序上没有这个问题。

【问题讨论】:

    标签: wpf vnc


    【解决方案1】:

    我没有阅读/发现任何关于通过远程连接查看 WPF 应用程序的已知问题。但是,如果您考虑 如何 远程连接是如何工作的,我想对这个问题进行一些猜测,甚至可能是一个解决方案。

    当您安装任何远程桌面软件时,您实际上会做两件事:设置中继器以中继输入命令并添加充当帧服务器的显示适配器,即,而不是输出内容屏幕到监视器它通过网络发送信息。

    如您所知,WPF 使用 DirectX 来加速其渲染(受 GPU 限制),不幸的是,所有显卡加速都无法通过远程桌面连接进行。

    我认为在您的具体情况下发生的情况是,当 WPF 尝试绘制上下文菜单时,它不会回退到使用它的软件渲染管道 - 可能是因为上下文菜单是 Popup 并且在单独的可视化树中.

    值得一试的是强制您的 WPF 应用程序使用软件呈现。

    void OnLoaded(object sender, EventArgs e)
    {
        HwndSource hwndSource = (HwndSource)PresentationSource.FromVisual(this);
        HwndTarget hwndTarget = hwndSource.CompositionTarget;
    
        hwndTarget.RenderMode = RenderMode.SoftwareOnly;
    }
    

    如果确实如此,您有两个选择:强制 WPF 使用软件渲染管道或尝试部署 Hewlett Packard 的 high-performance remote desktop access software 解决方案。

    HTH,

    参考文献
    - Microsoft guidelines for troubleshooting graphic issues in WPF.
    - Hardware Acceleration in WPF
    - HP Remote Graphics Software


    更新:对于搜索并找到此答案的其他人,您需要更改 VNC 客户端设置以启用 alpha 混合。正如@mcdrewski 所指出的,默认情况下 VNC 不会检测/渲染 alpha 混合窗口。启用 alpha 混合会产生成本,您会注意到 VNC 客户端有点滞后。

    【讨论】:

    • +1 我打算建议 WPF 可能正在使用不会沿管道传输的硬件渲染。这提供了问题和潜在的解决方案。好答案...
    • 感谢您的回答。我尝试使用 SortwareOnly 模式渲染整个应用程序或仅渲染上下文菜单,但都没有解决问题。
    • 我找到了解决方案。我只需要检查“启用 Alpha 混合”。我从这个博客得到这个。 mikestedman.blogspot.com/2009/02/… 。无论如何,我选择了你的答案。谢谢。
    • @tk: 你是指根元素上的AllowTransparency 属性吗?
    • @dennisRoche,不,(s)他不是指根元素上的“AllowTransparency”,(s)他指的是 VNC 服务器中的设置。默认情况下,VNC 似乎不会检测/渲染 alpha 混合窗口,例如 WPF 上下文菜单或许多 Qt 应用程序(DVDFab、魔兽世界启动器等)。更改服务器 PC 上的 VNC 设置以捕获 alpha 混合会以牺牲一些速度为代价。
    【解决方案2】:

    解决方法是:勾选 VNC Server 管理属性中的“Capture alpha blending”选项 -- 赫农

    【讨论】:

    • 我似乎根本找不到这个设置!请帮忙!
    • 我也找不到这个。我为服务器启动了 vcnconfig 应用程序,并检查了每一个复选框和专家标志。我发现在 VNC 上显示 Alpha Blending 窗口的唯一方法是关闭“空白本地屏幕”选项。关闭时,Alpha Blended 窗口和菜单会显示在 VNC 上。
    • 2018 年在 WinPE 10 环境中出现此问题。看起来 alpha 混合选项不再存在(在我正在使用的 VNC 应用程序中。)
    【解决方案3】:

    我能够在 VNC 中显示 Alpha 混合窗口或菜单的唯一方法是关闭服务器 VNCconfig 应用程序中桌面下的“在连接 VNC 查看器时黑屏”选项。

    【讨论】:

      【解决方案4】:

      它只是发生在 WPF 应用程序或任何其他应用程序上吗?尝试将桌面颜色质量更改为 16 位。

      【讨论】:

      • 仅适用于 WPF 应用程序。其他原生windows应用或者windows Form应用在我的VNC环境下没有这个问题。
      • 我只是尝试降低颜色质量,但它不起作用。
      【解决方案5】:

      在 VNC 服务器选项中查找名为 UseCaptureBlt 的选项并将其标记为 TRUE

      【讨论】:

        猜你喜欢
        • 2016-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-09
        • 1970-01-01
        相关资源
        最近更新 更多