0

我想将我正在控制的屏幕调整为浏览器的可用屏幕而不显示任何滚动条。我已经通过调整 html 元素的大小来做到这一点,但是通过这样做,光标的位置和移动也会在远程端发生变化。我正在使用鳄梨酱的示例应用程序

   var display = document.getElementById("display");
    // Instantiate client, using an HTTP tunnel for communications.
    var guac = new Guacamole.Client(
        new Guacamole.HTTPTunnel("tunnel")
    );
    // Add client to display div
    var dis =  guac.getDisplay().getElement();
    dis.getElementsByTagName("canvas")[0].style = "width:1100px;"
    dis.setAttribute("style", "width:1100px");
    display.appendChild(guac.getDisplay().getElement());

    // Error handler
    guac.onerror = function(error) {
        alert(error);
    };
    // Connect
    guac.connect();
4

3 回答 3

1

我的任务是在浏览器窗口更改时调整 RDP 屏幕的大小。最初,使用 connect 方法以指定的屏幕尺寸启动连接。我通过隧道发送具有所需尺寸的消息来更改屏幕。

GuacTunnel = new Guacamole.WebSocketTunnel(wsBaseUrl)
InstGuac = new Guacamole.Client(GuacTunnel);

const display = document.getElementById("display");

//---- Get Wrapper Size for Display Content 
let GUAC_WIDTH = Math.round($(display).width())
let GUAC_HEIGHT = Math.round($(display).height())

InstGuac.connect(`....&GUAC_WIDTH=${GUAC_WIDTH}&GUAC_HEIGHT=${GUAC_HEIGHT}&GUAC_DPI=96`);

window.onresize = function () {
    let GUAC_WIDTH  = Math.round($(display).width())
    let GUAC_HEIGHT = Math.round($(display).height())
    //---- Resize RDP window by sendMessage to the Server Guacamole
    GuacTunnel.sendMessage('size', GUAC_WIDTH, GUAC_HEIGHT)
 }
于 2021-12-07T18:27:56.040 回答
1

我能够通过使用 css 缩放和变换原点以及将比例因子与鼠标位置移动和触摸(从 canvas 发送到服务器)来解决这个问题。

于 2016-10-05T20:28:55.593 回答
0

对于遇到类似问题的人,我可以通过以下方法在后端 Java API 上设置配置来解决问题:

new GuacamoleConfiguration().setParameter("width", 500);

(您也可以指定height参数)

要获取客户端浏览器尺寸,您可以使用 JavaScript API 中的函数来指定额外的标头,从而为您提供所需的值。

var guac1 = new Guacamole.Client(
    new Guacamole.HTTPTunnel("tunnel",false,{"X-Display-Height":Math.round(win_height),"X-Display-Width":Math.round(half_width)})
);

之后,您可以提取标题中指定的尺寸。

于 2021-11-09T11:58:55.700 回答