Squish Hook进入具有Windows控制台和Qt窗口的AUT

时间:2016-07-05 12:22:22

标签: windows qt squish

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

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

是否有压力将Windows控制台识别为“Windows”并将Qt窗口识别为“Qt”?

1 个答案:

答案 0 :(得分:0)

a Knowledge Base article中记录了连接到Qt应用程序的用例,该应用程序是本机Windows应用程序的子进程。最简单的方法是:

  1. 重命名Qt应用程序的原始可执行文件,将myqtapp.exe改为同名,但在末尾添加下划线,即myqtapp_.exe
  2. 将Squish附带的dllpreload.exe程序重命名为myqtapp.exe
  3. 这样,你的Windows程序会在不知不觉中调用dllpreload.exe,然后会从自己的文件名中推断出原始应用程序的文件名(它只会添加一个下划线)。

    dllpreload.exe程序不是一个完美的代理,因此可能是您的Windows应用程序注意到它没有与真正的AUT交互。在这种情况下,可能更容易修改Windows应用程序,以便它明确地将dllpreload.exe预先添加到用于启动Qt应用程序的命令行。

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