GetSystemMetrics () сообщает о неверном значении мыши в сеансе RDP - PullRequest
0 голосов
/ 29 октября 2019

Если я вызываю функцию Windows GetSystemMetrics (), чтобы узнать количество кнопок установленной мыши, но она всегда возвращает 2, если функция вызывается из сеанса удаленного рабочего стола.

Моя компания работает надочень долгое время разработки и после миграции приложения на 64-битную версию была обнаружена странная проблема, связанная с кнопками мыши, при тестировании в современной среде. Приложению требуется 3 кнопки для выполнения 3 различных действий с графическими клиентами (на основе ILOG IlView).

Однако приложение получает события только для двух кнопок, если они выполняются в сеансе сервера терминалов / RDP. Но он отлично работает в сеансе консоли.

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

Внутреннее обнаружение выполняется путем вызова функции GetSystemMetrics ()SM_CMOUSEBUTTONS в качестве параметра. Результат варьируется между сеансами консоли и RDP.

Кажется, что проблема возникает, только если сеанс выполняется в Windows 10, но не в Windows 7. Независимо от того, какая версия Windows используется на стороне клиента.

int main (int argc, char **argv)
{
    printf("Number of buttons: %d\n", GetSystemMetrics(SM_CMOUSEBUTTONS));

    return 0;
} 

Ожидаемоерезультат в Windows 10 в сеансе RDP больше 2, если используется 3-кнопочная мышь. Фактический результат - 2.

...