winapi - 从 vbscript (qtp) 在 win32 dll 中传递一个指针

标签 winapi pointers dll vbscript qtp

我有一个很好的老式 win32 dll,具有以下形式的功能

void Foo1(int* value)
void Foo2(char* string)
void Foo3(MyType* data)
//ect...

我需要在 QTP (vbscript) 中调用它并检索数据以在 QTP 应用程序中使用。这在 vbscript 中甚至可能吗?

我对 DLL 有一定的控制权。它是用 C++ 编写的。构建 COM 服务器不是一种选择。重构代码以包含具有有序返回类型的访问器方法是不可能的(这将是维护和可扩展性的噩梦)。

编辑以阐明示例...

我有...

void Add(int x, int y, int* result)

...我需要执行与此等效的 QTP...

int myX = 2;
int myY = 5;
int myResult = -1;
添加(myX, myY, &myResult);
//myResult 现在应该是 7

...但在 QTP 中。

在QTP中调用int Bar(int x, int y)很简单。
我需要知道是否可以调用 void Foo(int* result)
以这种方式 Foo(&myResult) 并传入对结果的引用。

最佳答案

您可以声明外部函数,例如 Win32 API,但有一些限制,我相信该函数应该具有 extern "C" 链接,但并非所有类型都受支持。这是一个如何使用 QTP 中的 Win32 GetParent 函数的示例,您可以推断如何匹配您自己的函数。

' Declare
Extern.Declare micHwnd, "GetParent", "user32.dll", "GetParent", micHwnd
' explanation:  retVal     name        sourceDll     name        parameter

' Usage
hwnd = Extern.GetParent(Browser(“xxx”).GetROProperty("hwnd"))

名称出现两次的原因是您可以为您的脚本重命名它(我不记得哪个是要查找的名称以及哪个是您将使用的名称)。

关于winapi - 从 vbscript (qtp) 在 win32 dll 中传递一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6527610/

相关文章:

C free() 例程和递增的数组指针

windows - 从外部窗口的 GetWindowRect 获取 DPI 感知正确的 RECT

pointers - 不能分配给 `*x` 因为它是借来的

c - 动态定义和分配指针

c++ - 如何获得一个DLL加载进程句柄

dll - 如何将字符串从 DLL 返回到 Inno Setup Pascal 脚本

java - 无法在Java代码中使用.dll文件

c++ - 试图了解进程特权属性

winapi - WTSRegisterSessionNotification 有时在 XP home 启动时不起作用

c++ - GetDIBits 返回兼容位图的无效颜色数组