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

GetSystemMetrics() reporting wrong mouse value on RDP session

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

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

但是,如果在终端 Server/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;
} 

如果使用 3 键鼠标,RDP 会话中 Windows 10 的预期结果大于 2。实际结果为2.

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