Spy ++ for PowerBuilder应用程序

Fre*_*abe 6 powerbuilder introspection code-injection spy++

我正在尝试编写一个工具,让我检查基于PowerBuilder的应用程序的状态.我正在考虑的是像Spy ++(或者更好的,"Snoop",因为它存在于.NET应用程序中),它允许我检查一些基于PowerBuilder的GUI的对象树(和对象的属性).

我对普通(基于MFC)的应用程序以及.NET应用程序已经做了同样的事情,但不幸的是我自己从未在PowerBuilder中开发过应用程序,所以我现在通常会考虑两个问题:

  1. 是否有一些API(最好是Java或C/C++)可以让人们遍历PowerBuilder应用程序的可视对象树?我在PowerBuilder Native Interface系统上读了一下,但似乎这是用C/C++编写PowerBuilder扩展,然后可以用PowerBuilder脚本语言调用,对吧?

  2. 如果有一些可用的API - 也许PowerBuilder应用程序甚至会暴露某种支持IPC的API,它允许我检查PowerBuilder对象层次结构的状态而不在PowerBuilder应用程序的进程中?也许有可用的自动化界面,或基于COM的东西 - 或者其他东西?

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

有没有人有这方面的经验,或者可以说明是否有人试图这样做?

最好的祝福,

  • Frerich

Ter*_*rry 6

首先,答案很简单:我认为你要做的事已经完成了.来自Enable的Rex做了我认为你想要的事情,但是IIRC与开发人员交谈时,它依赖于应用程序内置的代码钩子.

这导致我认为你不能做我认为你试图从应用程序完全外部做的事情的建议.您可以使用WinAPI获取窗口句柄,并使用它执行一些基本操作,但不是您想要的.使用WinAPI获取有关DataWindows的信息?算了吧.

相信我听说过一个类似于你所问的API,但我从来没有听说过任何其他自动化测试软件工具制造商可以得到它.如果这是真的(并且这些信息的质量与"在走廊里听到它"的方式一致),我怀疑可能存在一些应用程序安全性问题.(我知道永远不想感染我的申请,或者四处寻找我的秘密.咧嘴笑)

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

我很佩服这个主意.我希望我有更好的消息(除了雷克斯可能解决你的问题,而不必自己做头痛).现在我更期待伊兰可能释放的东西!微笑

祝好运,

特里.