代码之家  ›  专栏  ›  技术社区  ›  Cyberherbalist

对象“~”失败“的方法“~”是什么意思?

  •  28
  • Cyberherbalist  · 技术社区  · 16 年前

    我试图在桌面上运行一个旧的vb6应用程序(它没有用户界面,是一个命令行应用程序),当我运行时,我收到一个消息框说

    Run-time error '4099':
    
    Method '~' of object '~' failed
    

    这对我来说毫无意义;有人知道发生了什么事吗?

    7 回复  |  直到 8 年前
        1
  •  15
  •   DJ.    16 年前

    当支持库(DLL或OCX)注册不正确或安装的库版本与应用程序最初编译时的版本不同(且不兼容)时,可能会发生这种情况。

    确保所有相关库都已注册并且版本正确。

    您可能需要重新编译应用程序,使其与支持库的较新版本一起工作。

        2
  •  7
  •   M.M    11 年前

    当Visual Basic 6应用程序进行引发异常(即返回失败)的COM接口调用时,会出现此消息 HRESULT )在这种情况下,vb6跳转到异常处理程序(由 On Error )在异常处理程序中有一个可见的对象 Err 其中包含异常的详细信息。

    如果对象实现 ISupportErrorInfo ,它实际上支持错误信息,并设置了错误信息,然后 Err.Description 获取对象设置的错误信息中的字符串。否则, 错误描述 拿着绳子 Method ~ of ~ failed .

    idk其他版本的vb是否执行相同的操作;或者如果消息也在我刚才描述的场景之外的其他场景中设置。

        3
  •  2
  •   Brian Leeming    15 年前

    我有vb6 sp6,我可以复制这种行为。在新项目中,将此代码放入表单。该项目使用F5正常运行。右键单击项目并选择“发布”,然后选择“生成输出”。这将生成错误消息。

    Option Explicit
    
    Public Sub Init()
        Dim blnErrorHandling As Boolean
    
        If False Then
            blnErrorHandling = True
        Else
            blnErrorHandling = False
    End Sub
    

    现在评论最后四行:

    Option Explicit
    
    Public Sub Init()
        Dim blnErrorHandling As Boolean
    
    '    If False Then
    '        blnErrorHandling = True
    '    Else
    '        blnErrorHandling = False
    End Sub
    

    您不再得到错误,并且输出是正常构建的。我很快加入了一些错误处理来定位崩溃的源头,并且 If False Then 完全有效。MDAC检查人员说一切正常,重新启动无法解决问题。

        4
  •  2
  •   Julien Marodon    13 年前

    另一个原因可能是在使用自动化时,Office的某些次要版本不匹配:

    我有一个传统的vb5+access应用程序(我正在Delphi中重写它,并用干净的OpenDocument生成替换所有的自动化混乱),在某些系统上运行良好,在其他系统上出现错误。

    这个错误会在生成Excel电子表格时发生,看起来是无害的(除了烦人之外,它会显示用户点击中间“中止”的风险的十几倍),就像总是点击“忽略”一样,一切都按预期工作。

    我最终发现原因是Office97的安装方式:

    如果Office 97安装顺序为:

    • Office 97 SR0安装CD
    • 应用SR1修补程序
    • 应用SR2修补程序

    但如果安装时带有:

    • Office 97 SR1安装CD
    • 应用SR2修补程序

    在受影响的系统上使用SR1安装程序进行卸载/重新安装解决了该问题。

        5
  •  0
  •   Mon Calamari    10 年前

    对于作为命令行应用程序运行的vb6程序,编译后需要额外的阶段:需要在可执行文件上运行vb6链接器以将其设置为控制台程序:

    <VB6 dir>\LINK.EXE  /EDIT  /SUBSYSTEM:CONSOLE  <program>.exe
    

    如果不这样做,将导致 Method '~' of object '~' failed 程序运行时出错。

        6
  •  0
  •   Sajjad    8 年前

    根据我的经验,这是由于Microsoft Access版本。

    我的程序是在MS Office 2007中创建的,并安装了较新版本的MS Office。这就是出现此错误的原因。

        7
  •  -4
  •   Matthew Lancaster    10 年前

    我有一段时间遇到了这个问题。

    我找了一个答案,这个网页是搜索的首选。

    刚才。

    我卸载了Office 2000工具栏

    已卸载Visual Basic 6并已全部删除,但未删除msdn。

    已重新安装Visual Basic 6

    但是我的剪贴板记录器程序在VisualBasic6中一直在运行

    发现这是个错误

    如果不运行,我就不会出错。

    “~”对象“~”方法失败

    启动Visual Basic 6 IDE时

    用ctrl f5运行剪贴板代码vb6程序后

    从完全编译开始

    并纠正了代码中的编译错误

    但加载vb6-ide时仍有问题

    直到我通过整个剪贴板代码将-option显式地放入

    除了一个模块太大而无法快速完成

    尤其是在课堂上

    有一些未声明的变量

    然后治愈了它

    这是我个人的解决方案,也是我对这个网站的贡献

    在此进行其他更新和编辑

    读完这个主题的三个主题后 其中一个关于剪贴板 https://stackoverflow.com/a/8577499/5226365

    我又一次发现了这个bug测试

    因为这是我的剪贴板代码

    我对vb6 ide在加载时使用剪贴板感到恼火,尤其是当 将剪贴板携带到代码中

    我让代码截获了位图的vb6 ide加载 把以前的东西放回去

    现在,我必须更仔细地考虑代码,等待启动屏幕以“findwindow”结束。

    我想我现在已经解决了

    我有一个专业编写的剪贴板源代码,我认为它使用API

    我已经找到了,还没有用

    在我的代码中,我必须搜索似乎很痛苦

    For i = -30000 To 32000
        i2 =  Clipboard.GetFormat(i)
    Next
    

    测试是否错误

    用于窗体设计器中的剪贴板对象

    所以它们不会被破坏或干扰我的代码程序

    我的剪贴板程序代码是我一直运行的唯一持久的程序

    用于来自Internet页面的剪贴板

    它记录了截图的图片、位图以及存储在日期和时间文件中的内容。

    我希望我知道更多关于如何获取拖放信息的信息

    希望这有帮助

    2015年8月14日上午8点至上午9点

    推荐文章