【问题标题】:Though VB6 IDE unable to get object through GetObject function on windows 10虽然 VB6 IDE 无法通过 Windows 10 上的 GetObject 函数获取对象
【发布时间】:2016-06-27 22:21:57
【问题描述】:

在装有 Visual Studio 6 SP 6、Visual Studio 2102 和 Visual Studio 2015 的 Windows 10 机器上,当从 Visual Studio 6 IDE 执行代码时,我无法从正在运行的对象表中检索对象实例。

我以管理员身份运行 vb6 并调用以下 VB 调用:

Set SapGuiAuto = GetObject("SAPGUI")

我收到以下错误:

Automation error , Invalid syntax

奇怪的是,当从可执行文件中调用相同的代码时,我得到了对象的实例和所需的结果。从 VB6 IDE 调用任何“GetObject”函数时发生的错误。没有编译错误,当从可执行文件执行相同的代码时也没有错误。但是,从 IDE 调用时无法继续。 我以前曾多次使用此函数调用,它甚至可以在 Windows 10 上运行,但现在无法调试任何使用“GetFunction”方法的 vb6 应用程序。

在同一台机器上,我还安装了 Visual Studio 2015 和 Visual Studio 2012。我记得的唯一变化是安装了 Visual Studio 2012。

【问题讨论】:

    标签: visual-studio vb6


    【解决方案1】:

    为了能够访问进程外 COM 服务器,客户端和服务器都必须在相同的完整性级别下运行,即如果客户端 (VB6) 被提升,那么服务器 (SAPGUI) 也必须被提升并且相同如果客户端被提升——服务器也应该被提升。

    尝试以管理员身份启动 SAPGUI 可执行文件,然后在 VB6 IDE 中启动调试会话。

    【讨论】:

    • 我已经尝试了这两个选项。将可选参数传递给函数调用并将两个应用程序作为提升的角色运行,但没有运气。
    • 使用Process Explorer 监控两个进程的提升级别。显示Integrity 列以查看发生了什么。
    • 我已经厌倦了在提升模式下运行两个应用程序以及在非提升模式下运行两个应用程序的选项,但没有任何运气。我也尝试过 GetObject(,"SAPGUI") 的版本,但没有成功。
    【解决方案2】:

    试试这个:

    Set SapGuiAuto = GetObject(,"SAPGUI")
    

    GetObject 有一个可选参数,有时它需要一个提示...

    【讨论】:

    • 这就是为什么在我的代码示例中“SAPGUI”之前有一个逗号。将其作为第二个参数传递。
    猜你喜欢
    • 2019-01-30
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多