я не вижу контекстного меню приложения Windows WPF через VNC - PullRequest
0 голосов
/ 07 июня 2010

Я могу открыть контекстное меню, но не могу увидеть список открытого меню через VNC.(Я знаю, что могу открыть контекстное меню, проверив компьютер с сервером vnc напрямую). Я тестировал на разных компьютерах / клиентских машинах vnc (хотя все они - Windows Vista) и в разных приложениях wpf, но все равно не вижу ни одного списка меню..

Это заявленная проблема?Я нашел некоторую информацию о проблеме wpf, относящейся к рабочему столу Windows, но я не знаю о vnc.

ДОБАВЛЕНО: У меня нет этой проблемы в собственных приложениях Windows или приложениях форм Windows в моей среде vnc.

Ответы [ 5 ]

3 голосов
/ 11 июня 2010

Я не читал / не обнаружил ни одной известной проблемы, связанной с просмотром приложений WPF через удаленное соединение.Однако, если вы подумаете о , как работают удаленные соединения, я бы хотел дать несколько предположений о проблеме и даже, возможно, о ее решении.

При установке любого программного обеспечения для удаленного рабочего стола вы действительно делаете две вещи: настраиваете ретранслятор для ретрансляции входных команд и добавляете дисплейный адаптер , который действует как сервер кадров, т. Е. Вместо выводасодержимое экрана на монитор отправляет информацию по сети.

Как вы знаете, WPF использует DirectX для ускорения рендеринга (с привязкой к графическому процессору), и к сожалению, ограничение ускорения всех графических карт не работает через подключение к удаленному рабочему столу.

Я считаю, чтов вашем конкретном случае происходит то, что 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.

HTH,

Ссылки
- Рекомендации Microsoft по устранению графических проблем в WPF.
- Аппаратное ускорение вWPF
- ПО для удаленной графики HP


Обновление: Для других пользователей, которые ищут и находят этот ответ, вам нужно изменить настройки клиента VNCвключить альфа-смешение .Как отметил @mcdrewski, по умолчанию VNC не обнаруживает / рендерит окна с альфа-смешиванием.Включение альфа-смешивания требует больших затрат, и вы заметите, что клиент VNC немного запаздывает.

3 голосов
/ 14 октября 2010

Решение: установите флажок «Захватить альфа-смешение» в свойствах администратора VNC Server. - хенон

1 голос
/ 13 декабря 2014

Единственный способ отображения альфа-смешанных окон или меню в VNC - отключить опцию «Очистить экран, когда подключены средства просмотра VNC» в разделе «Рабочий стол» приложения VNCconfig для сервера.

0 голосов
/ 18 декабря 2015

В опции сервера VNC найдите параметр с именем UseCaptureBlt и отметьте его TRUE

0 голосов
/ 07 июня 2010

Это просто происходит в приложениях WPF или любых других приложениях? Попробуйте изменить качество цвета рабочего стола на 16 бит.

...