我能';无法通过VNC查看WPF windows应用程序的上下文菜单

我能';无法通过VNC查看WPF windows应用程序的上下文菜单,wpf,vnc,Wpf,Vnc,我可以打开上下文菜单,但无法通过VNC查看打开的菜单列表。(我知道我可以通过直接检查vnc服务器来打开上下文菜单) 我在不同的vnc服务器/客户机(尽管它们都是windows Vista)和不同的wpf应用程序上进行了测试,但仍然看不到任何菜单列表 这是报告的问题吗?我发现了一些有关windows桌面wpf问题的信息,但我不知道vnc 添加:我在vnc环境下的windows本机应用程序或windows窗体应用程序上没有此问题。这只是发生在WPF应用程序或任何其他应用程序上吗?尝试将桌面颜色质量更

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

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


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

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

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

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

如您所知,WPF使用DirectX加速其渲染(绑定GPU),不幸的是,所有图形卡加速都无法通过远程桌面连接工作

我认为,在您的具体案例中,WPF在尝试绘制上下文菜单时并没有退回到使用其软件渲染管道——可能是因为上下文菜单是一个
弹出窗口
,并且位于一个单独的视觉树中

值得一试的是强制您的WPF应用程序使用软件渲染

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

    hwndTarget.RenderMode = RenderMode.SoftwareOnly;
}
如果事实证明确实如此,您有两个选择:强制WPF使用软件渲染管道或尝试部署Hewlett-Packard的解决方案

嗯,

参考资料
-
-
-



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

解决方案是:在VNC服务器的管理属性中选中“捕获alpha混合”选项
--henon

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

在VNC服务器选项中,查找名为UseCaptureBlt的选项,并仅在WPF应用程序上将其标记为TRUE

。其他本机windows应用程序或windows窗体应用程序在我的VNC环境中没有此问题。我只是尝试降低颜色质量,但它不起作用。+1我想建议WPF可能使用硬件渲染,而不会沿管道传输。这提供了问题和潜在的解决方案。回答得好…谢谢你的回答。我试图用SortwareOnly模式呈现整个应用程序或仅呈现上下文菜单,但两者都没有解决问题。我找到了解决方案。我只需要选中“启用alpha混合”。我从这个博客上得到了这个。不管怎样,我选择了你的答案。thnx@tk:你是指根元素上的
AllowTransparency
属性吗?@dennisRoche,不,(s)他不是指根元素上的“AllowTransparency”,他指的是VNC服务器中的设置。在默认情况下,VNC似乎不会检测/渲染alpha混合窗口,例如WPF上下文菜单或许多Qt应用程序(DVD Fab、魔兽世界启动器等)。在服务器PC上更改VNC设置以捕获alpha混合是以牺牲一些速度为代价的。我似乎根本找不到这个设置!请帮忙!我也找不到这个。我为服务器启动了vcnonfig应用程序,并选中了每个复选框和专家标志。我发现在VNC上显示Alpha混合窗口的唯一方法是关闭“空白本地屏幕”选项。当该选项关闭时,Alpha混合窗口和菜单将显示在VNC上。2018年在WinPE 10环境中出现此问题。看起来alpha混合选项不再存在(在我使用的VNC应用程序中)