Winapi 如何使用VBScript读取内存值?

Winapi 如何使用VBScript读取内存值?,winapi,memory,vbscript,qtp,Winapi,Memory,Vbscript,Qtp,我想使用VBScript直接从另一个正在运行的应用程序的内存中读取值。 我似乎找不到有关在VBScript中使用ReadProcessMemory()的信息 我打算在QuickTestPro中使用它来对需要测试的应用程序进行屏幕抓取。 此应用程序不使用任何标准控件,并且使用QTP的OCR功能无法为我们提供可靠的结果 我们目前有用AutoIT编写的代码,可以直接从内存中读取此应用程序的值,并将其转换为ASCII。但我们希望消除对这一点的依赖,在QTP中使用VBScript将是理想的 那么,有谁能告

我想使用VBScript直接从另一个正在运行的应用程序的内存中读取值。
我似乎找不到有关在VBScript中使用
ReadProcessMemory()
的信息

我打算在QuickTestPro中使用它来对需要测试的应用程序进行屏幕抓取。 此应用程序不使用任何标准控件,并且使用QTP的OCR功能无法为我们提供可靠的结果

我们目前有用AutoIT编写的代码,可以直接从内存中读取此应用程序的值,并将其转换为ASCII。但我们希望消除对这一点的依赖,在QTP中使用VBScript将是理想的


那么,有谁能告诉我如何使用VBScript从内存中的可执行文件中读取值吗?

您不能直接在VBScript中执行此操作。正如Josh Einstein在上述评论中提到的,直接从VBScript调用本机Windows API函数是不可能的。这主要有两个原因。首先,使用这种脚本语言编写的代码能够直接调用本机代码,这会带来明显的安全风险。第二,VBScript只有一种数据类型(
Variant
),它不能与大多数Windows API函数的返回值一起正常工作


相反,您必须将所需的本机API函数封装在ActiveX DLL中(COM自动化对象),,然后从VBScript调用该库中的函数。包装器DLL将专门为VBScript互操作性而设计,并负责任何必要的数据类型转换,仅公开
Variant
类型,并包含所有必要(或潜在必要!)的错误处理例程。使用VB 6是最快最简单的方法,甚至不需要你学习一种新的语言,但是你也可以从C++中学习。如果您愿意的话。

VBScript无法直接调用Windows API或其他本机函数。您最好将应用程序转换为无需读取进程内存即可测试的应用程序。我希望该应用程序由第三方供应商编写。