首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spy++用于PowerBuilder应用程序

Spy++用于PowerBuilder应用程序
EN

Stack Overflow用户
提问于 2009-06-18 08:45:27
回答 2查看 1.9K关注 0票数 7

我正在尝试编写一个工具,它允许我检查基于PowerBuilder的应用程序的状态。我想到的是一些类似于Spy++ (或者更好的是,.NET应用程序中存在的“Snoop”)的东西,它允许我检查一些基于PowerBuilder的GUI的对象树(和对象的属性)。

对于普通的(基于MFC的)应用程序和.NET应用程序,我已经做了同样的工作,但不幸的是,我自己从来没有开发过PowerBuilder应用程序,所以我通常在这里考虑两个问题:

  1. 是否有一些API (最好是在Java或C/C++中)可以让您遍历PowerBuilder应用程序的可视化对象树?我读了一些关于PowerBuilder本机接口系统的内容,但这似乎是为了用C/C++编写PowerBuilder扩展,然后可以从PowerBuilder脚本语言调用这些扩展,对吗?
  2. 如果有可用的API --也许PowerBuilder应用程序甚至公开了某种启用IPC的API,它允许我检查PowerBuilder对象层次结构的状态,而无需在PowerBuilder应用程序的进程中?也许有一个自动化接口,或者基于COM的东西-或者其他什么东西?

现在,我的印象是,可能需要向PowerBuilder应用程序的进程中注入一个DLL,然后访问正在运行的PowerBuilder VM,以便我可以查询它以获得对象树。然后,某种IPC机制将允许我将这些信息从PowerBuilder应用程序的进程中传输出去。

是否有人有这方面的经验,或能说明是否有人已经尝试这样做?

诚挚的问候,

  • 弗雷里希
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-18 19:48:57

首先,简单的答案是:我认为你想要做的事情已经完成了。Rex从启用做我想要做的事情,但是IIRC从与开发人员的谈话中,它依赖于应用程序中内置的代码钩子。

这导致了这样的建议:我不认为你将能够做我认为你试图从应用程序完全外部完成的事情。您可以使用WinAPI抓取窗口句柄,并使用它做一些基本的事情,但不要像您想要的那样多。通过WinAPI获取有关DataWindows的信息吗?休想。

我相信我听说过像你所问的那样的API,但我从未听说过任何其他的自动化测试软件工具制造商会得到它。如果这是真的(而且这些信息的质量类似于“在走廊里听到了”),我怀疑让这个消息泄露出去可能存在一些应用程序安全问题。(我知道你不想感染我的申请,也不想到处打听我的秘密。咧嘴笑)

即使使用钩子进入PowerBuilder VM内存空间,我也不知道在没有PowerScript框架钩子的情况下能够获得内存中的对象列表(例如,在每个打开的和构造函数上填充一个列表和对象句柄)。一旦有了窗口句柄,您就可以轻松地遍历它的控件数组(以及它的子类控件数组),以获得窗口上的对象列表,但是像NVO实例变量的句柄之类的东西会有问题。

我很欣赏这个主意。我希望我有更好的消息(除了雷克斯也许可以解决你的问题,而不用麻烦你自己去做)。现在我更期待埃伦能发布什么!笑一笑

祝好运,

特里。

票数 6
EN

Stack Overflow用户

发布于 2009-06-18 10:27:45

我刚刚发明了这样一个工具,但我作弊了一点。我自己也要在PB新闻组上问同样的问题。我的解决方案由两部分组成:

Spy类工具-类似于Spy++的独立应用程序,即允许您使用Windows函数将目标拖到控件上(尽管是用PB编写的)。

目标应用程序的内部基础结构-位于应用程序的所有窗口的祖先。一旦给定了某个(windows)句柄,它就会遍历Control[]数组,并查找其句柄与给定句柄匹配的控件。如果有必要,它也会递归到控件容器中,比如选项卡。

当用户选择控件时,间谍工具首先使用Windows查找其包含的窗口。找到后,该工具会向该窗口发送一条自定义消息,然后由应用程序的基础设施来处理。然后该控件位于PB应用程序中,其详细信息最终被发送回间谍工具,该工具将它们呈现给用户。

我怀疑基础设施部分可以被一些外部的东西所取代,因为我已经看到了一些似乎能够做到这一点的工具(Visual,QTP)。然而,我没有时间做进一步的研究,而且这个解决方案相对容易开发。

我得说,你的问题来得太突然了。见我最近的这个问题。如果您对我创建的工具感兴趣,请给我一个评论。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1011536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档