You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

断开远程桌面时能否设置桌面分辨率适配SAP GUI脚本运行?

问题描述

在Windows虚拟机上运行SAP GUI脚本自动化任务时,断开远程桌面环节会使用如下批处理命令,实现断开连接的同时保留当前用户虚拟会话:

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)

此前执行GUI脚本从未出现分辨率相关问题,本次环境异常表现如下:

  • 登录虚拟机状态下执行脚本时,SAP登录界面及其余SAP窗口会匹配本地笔记本屏幕尺寸,以全屏模式启动
  • 执行上述批处理文件断开远程桌面后,虚拟会话屏幕显示区域缩小,脚本无法定位可见区域下方、需要滚动才能显示的元素,导致运行异常
  • 虚拟会话运行中途重新登录虚拟机时,可观察到SAP窗口尺寸随会话分辨率自动缩放,未保持登录状态下的全屏尺寸

当前使用的SAP客户端版本为 SAP client 770,账号无修改虚拟机屏幕分辨率的系统权限。


可行解决方案

以下方案均不需要管理员权限,可按优先级逐一验证:

  • 方案1:固定SAP GUI窗口尺寸+脚本自动聚焦元素(优先推荐,适配SAP 770版本)

    1. 打开SAP GUI登录器,进入选项设置,找到「可视化设计-窗口调整」配置项,取消勾选「自适应屏幕分辨率全屏启动」,手动设置固定窗口尺寸为960720(小于无显示器挂载时console会话默认的1024768分辨率),保存配置后SAP窗口不会再随会话分辨率变化自动缩放
    2. 脚本侧补充逻辑:每次操作页面对象前,直接调用session.findById("目标元素ID").setFocus()方法,SAP 770版本会自动将页面滚动到目标元素位置,无需手动计算滚动条偏移,完全不依赖页面可见区域范围
    3. 额外可在脚本开头加一行session.findById("wnd[0]").resizeWorkingPane(960, 720, False),强制SAP工作窗格保持固定尺寸,彻底屏蔽外层会话分辨率的影响
  • 方案2:调整tscon执行流程,锁定会话分辨率
    执行tscon命令切换到console会话前,先把当前RDP会话的显示分辨率手动调整为1024*768,再执行批处理断开连接,console会话会保留最后一次RDP连接设置的分辨率,不会自动缩小显示区域。如果需要批量执行,可提前生成固定分辨率的RDP配置文件,在自动化流程中先调用配置文件连接虚拟机,再执行后续操作,无需手动调整。

  • 方案3:用户级注册表配置固定console会话分辨率

    1. 打开注册表编辑器,定位到当前用户配置路径HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO
    2. 找到对应虚拟显卡的配置项,新增两个DWORD值:DefaultSettings.XResolution设置为需要的水平分辨率(如1920),DefaultSettings.YResolution设置为对应垂直分辨率(如1080)
    3. 注销重新登录会话后,即使断开RDP切换到console会话,也会默认使用预设的固定分辨率,不会出现显示区域缩小问题。
  • 方案4:补充脚本滚动兼容逻辑
    针对长页面、表格类容器对象,定位元素前先判断元素的Visible属性,如果属性值为False,就循环调整对应容器的verticalScrollbar.position参数,逐步向下滚动直到目标元素可见后,再执行点击、取值等操作,适配任意分辨率下的页面显示。


内容的提问来源于stack exchange,提问作者udani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:27:04