我使用 libvncclient 来构建一个查看器,在其中我尝试集成一个特定的热键,这些热键执行一些脚本,这些热键作为菜单选项完成,例如enable taskmanager
窗口的“运行 cmd”和“打开终端”更新repos' 等。我需要检测操作系统信息,但我没有看到任何可以从 rfb proto 中获取此信息的信息
rfbClient *client = new client();
if(!ConnectToRFBServer(client,client->serverHost,client->serverPort))
return FALSE;
if (!InitialiseRFBConnection(client))
return FALSE;
我查看了rfbclient.h
rfbClient 结构并没有保存任何存储此信息的回调/或字段,并且似乎没有 API。但是在 rfc 中有这个东西https://www.rfc-editor.org/rfc/rfc6143#section-7.3.2
服务器收到ClientInit消息后,发送ServerInit消息。这会告诉客户端服务器帧缓冲区的宽度和高度、像素格式以及与桌面关联的名称:
理查森和莱文信息 [第 11 页]
RFC 6143 远程帧缓冲协议 2011 年 3 月
+--------------+--------------+------------------------------+
| No. of bytes | Type [Value] | Description |
+--------------+--------------+------------------------------+
| 2 | U16 | framebuffer-width in pixels |
| 2 | U16 | framebuffer-height in pixels |
| 16 | PIXEL_FORMAT | server-pixel-format |
| 4 | U32 | name-length |
| name-length | U8 array | name-string |
+--------------+--------------+------------------------------+
但似乎 libvnc 没有处理这个问题,有没有办法可以获取这些信息?