我无法通过VNC看到WPF Windows应用程序的上下文菜单

时间:2010-06-07 14:03:45

标签: wpf vnc

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

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

补充:我在vnc环境下的Windows原生应用程序或Windows窗体应用程序上没有这个问题。

5 个答案:

答案 0 :(得分:3)

我没有阅读/发现有关通过远程连接查看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 :(得分:3)

解决方案是:检查VNC服务器管理员属性中的“捕获alpha混合”选项 - 赫农

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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