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

时间:2019-10-28 23:06:55

标签: c windows rdp

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

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

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

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

通过在内部调用SM_CMOUSEBUTTONS作为参数调用GetSystemMetrics()来进行检测。结果在控制台会话和RDP会话之间有所不同。

该问题似乎仅在Windows 10上执行会话时才会发生,而不是在Windows 7上执行。无论客户端使用什么Windows版本。

data = [
  {
    "_id": "5db581e58e11ad1b933e7f42",
    "name": "ZANITY",
    "times": [
      {
        "timestamp": 1474607824073,
        "dateUTCString": "Sat Sep 03 2016 19:01:09 GMT+0000 (UTC)",
      },
      {
        "timestamp": 1389120349942,
        "dateUTCString": "Mon Aug 19 2019 05:43:14 GMT+0000 (UTC)",
      },
    ]
  },
  {
    "_id": "5db581e584de79b380890f75",
    "name": "VETRON",
    "times": [
      {
        "timestamp": 1474607824073,
        "dateUTCString": "Sat Sep 03 2016 19:01:09 GMT+0000 (UTC)",
      },
      {
        "timestamp": 1389120349942,
        "dateUTCString": "Mon Aug 19 2019 05:43:14 GMT+0000 (UTC)",
      },
    ]
  },
  {
    "_id": "5db581e565b82e2b729077e1",
    "name": "KOZGENE",
    "times": [
      {
        "timestamp": 1474607824073,
        "dateUTCString": "Sat Sep 03 2016 19:01:09 GMT+0000 (UTC)",
      },
      {
        "timestamp": 1389120349942,
        "dateUTCString": "Mon Aug 19 2019 05:43:14 GMT+0000 (UTC)",
      },
    ]
  }
]```

如果使用三键鼠标,则Windows 10上RDP会话的预期结果大于2。实际结果是2。

1 个答案:

答案 0 :(得分:0)

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