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

扩展TestComplete:如何在JS脚本扩展中更改光标?

在TestComplete JS脚本扩展中切换光标(箭头/沙漏)的解决方案

我之前在做TestComplete扩展时也碰到过完全一样的问题——JS脚本扩展确实没法直接调用Win32API,你想到的通过VBS模块封装API再给JS调用的思路完全正确,而且是目前最靠谱的解决方案,我来帮你把这个方案补全,确保能跑通:


步骤1:创建/扩展VBS模块

在你的ScriptExtension项目里新建一个VBScript模块(比如命名为CursorUtils.vbs),或者把代码加到你已有的VBS模块中。

步骤2:加载user32.dll并声明API原型

在VBS模块的Init方法里(如果没有就新建这个方法),加载系统的user32.dll并声明需要的API函数和常量:

Sub Init
  ' 声明user32.dll中的核心函数
  Declare Function SetCursor Lib "user32.dll" (ByVal hCursor As Long) As Long
  Declare Function LoadCursorA Lib "user32.dll" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
  
  ' 定义系统预定义光标的常量值
  Const IDC_ARROW = 32512
  Const IDC_WAIT = 32514
End Sub

步骤3:编写切换光标的具体方法

在同一个VBS模块里,添加两个专门用于切换光标的方法:

' 切换为沙漏光标
Sub setCursor2Hourglass
  SetCursor LoadCursorA(0, IDC_WAIT)
End Sub

' 切换回箭头光标
Sub setCursor2Arrow
  SetCursor LoadCursorA(0, IDC_ARROW)
End Sub

步骤4:在Description.xml中暴露方法给JS

打开ScriptExtension的Description.xml配置文件,找到(或新增)<RuntimeObjects>节点,把刚才写的两个方法暴露到一个自定义命名空间下(比如CursorUtils):

<ScriptExtension>
  <!-- 这里保留你原有的其他配置项 -->
  <RuntimeObjects>
    <RuntimeObject Name="CursorUtils">
      <Method Name="setCursor2Hourglass" />
      <Method Name="setCursor2Arrow" />
    </RuntimeObject>
  </RuntimeObjects>
</ScriptExtension>

步骤5:在JS模块中调用切换方法

现在你就可以在JS脚本扩展里直接调用这些方法了,完美解决光标切换的需求:

// 开始耗时的签名同步操作前,切换为沙漏光标
CursorUtils.setCursor2Hourglass();

// 执行你的Keyword-Test签名同步逻辑
// ... 这里是你的耗时代码 ...

// 操作完成后,立即切换回箭头光标
CursorUtils.setCursor2Arrow();

一些额外注意事项:

  • 确保你的ScriptExtension项目编译后正确安装到TestComplete,否则JS模块会找不到CursorUtils命名空间
  • 如果你的同步操作是异步执行的,一定要记得在异步回调的末尾切换回箭头光标,避免光标一直停留在沙漏状态
  • LoadCursorA的第一个参数传0,表示直接加载系统预定义的光标,不需要自己创建或加载自定义光标文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:17:45