0

当尝试使用设置为 Qt 的工具包和“挂钩到应用程序启动的子进程”集来启动 AUT 时,我必须使用启动应用程序(这是一个启动进程以设置 Qt 窗口的 Windows 应用程序) Squish 提供的 dllpreload.exe 附加到 Qt 窗口。这样做不会显示 Windows 控制台,只会启动 Qt 窗口。这成功连接到 Qt...

设置testSettings.setWrappersForApplication("application", ("Windows", "Qt"))ortestSettings.setWrappersForApplication("application", ("Windows"))时,它无法将 Qt 窗口作为 Qt 窗口挂接,并且无法识别 Qt 组件。

无论如何,squish 是否可以将 Windows 控制台识别为“Windows”,将 Qt 窗口识别为“Qt”?

4

1 回答 1

0

知识库文章中记录了挂钩到作为本机 Windows 应用程序子进程的 Qt 应用程序的用例。最简单的方法是:

  1. 重命名 Qt 应用程序的原始可执行文件,说myqtapp.exe是相同的名称,但在末尾添加下划线,即myqtapp_.exe.
  2. dllpreload.exe将Squish 附带的程序重命名为myqtapp.exe.

这样,您的 Windows 程序将在不知不觉中调用dllpreload.exe,然后它会从其自己的文件名中推断出原始应用程序的文件名(它只会添加一个下划线)。

不过,该dllpreload.exe程序并不是一个完美的代理,因此您的 Windows 应用程序可能会注意到它没有与真正的 AUT 交互。在这种情况下,可能更容易修改 Windows 应用程序,使其显式dllpreload.exe添加到用于启动 Qt 应用程序的命令行。

您可以有条件地执行此操作,以便仅在通过 Squish 启动 Windows 应用程序时执行此操作。这种情况可以通过测试SQUISH_PREFIX环境变量的存在来检测。

于 2016-07-19T15:27:03.357 回答