Похоже, что это происходит потому, что приложение не получает уведомление WM_CONTEXTMENU
в случае RemoteApp. Обычные WM_RBUTTONDOWN
и WM_RBUTTONUP
уведомления приходят, но это все. Странно, если вы попытаетесь активировать контекстное меню с помощью клавиатуры, вы также получите WM_RBUTTONDOWN
и WM_RBUTTONUP
, даже если мышь не была задействована. Нажатие Ctrl + Alt + End появляется, чтобы решить эту проблему; система начинает отправлять обычные WM_CONTEXTMENU
уведомления. Я предполагаю, что это ошибка в клиентском процессе удаленного рабочего стола.
Одним из возможных исправлений будет запуск контекстного меню с использованием WM_RBUTTONUP
, но это нарушает доступность клавиатуры, поэтому я не рекомендую его.
Обходной путь, на котором я остановился, был следующий:
- Когда вы видите уведомление
WM_RBUTTONUP
, установите таймер с коротким тайм-аутом (50-100 мс).
- Когда вы видите уведомление
WM_CONTEXTMENU
, отмените таймер и откройте контекстное меню.
- Когда таймер срабатывает, отмените таймер и откройте контекстное меню.
Это должно работать для локального использования и использования RemoteApp. Значение времени ожидания на шаге 1 должно быть достаточно длинным, чтобы оно не истекло до появления WM_CONTEXTMENU, но не больше.