GetSystemMetrics()在RDP会话上报告错误的鼠标值

问题描述 投票:0回答:1

如果我调用Windows GetSystemMetrics()函数来了解已安装鼠标的按钮数量,但是如果从远程桌面会话中调用该函数,它将始终返回2。

我的公司正在进行很长时间的开发,将应用程序迁移到64位后,在现代环境中进行测试时,发现了与鼠标按钮有关的奇怪问题。该应用程序需要3个按钮才能在图形客户端(基于ILOG IlView)上执行3种不同的操作。

但是,如果在终端服务器/ RDP会话上执行,该应用程序仅接收两个按钮的事件。但它在控制台会话上可以正常工作。

该软件仅检测到两个按钮,图形库将忽略来自第三个按钮的事件。

通过在内部调用SM_CMOUSEBUTTONS作为参数调用GetSystemMetrics()来进行检测。结果在控制台会话和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。实际结果是2。

c windows rdp
1个回答
0
投票

ILOG(Views)中有解决方法。您必须在ini文件中设置UseRightButton = true有关更多详细信息,请参见,https://docs.roguewave.com/en/visualization/current/views/views.html#page/UserManuals/display.07.4.html#ww924027

© www.soinside.com 2019 - 2024. All rights reserved.