Com 应用程序定义错误或用户定义错误-VB6

Com 应用程序定义错误或用户定义错误-VB6,com,vb6,manifest,ocx,Com,Vb6,Manifest,Ocx,首先,我需要澄清这不是一个与VBA相关的问题。此错误发生在与MS Office无关的Visual Basic 6.0发行版程序上 该程序由一个名为“Color_Picker.exe”的可执行文件和一个名为“colormationcontrols.ocx”的ActiveX控件组成。我正试图利用这个机会 每当我尝试使用清单设置运行我的程序时 “应用程序定义的错误或用户定义的错误。” 突然出现。从错误窗口的标题(始终是有问题的类的名称)中,我可以看出错误发生在OCX中 问题是我知道类运行时没有错误。

首先,我需要澄清这不是一个与VBA相关的问题。此错误发生在与MS Office无关的Visual Basic 6.0发行版程序上


该程序由一个名为“Color_Picker.exe”的可执行文件和一个名为“colormationcontrols.ocx”的ActiveX控件组成。我正试图利用这个机会

每当我尝试使用清单设置运行我的程序时

“应用程序定义的错误或用户定义的错误。”

突然出现。从错误窗口的标题(始终是有问题的类的名称)中,我可以看出错误发生在OCX中

问题是我知道类运行时没有错误。为了确保这不是与Windows 10不兼容的问题,因为程序是在Windows XP中编译的,我正确注册了OCX,当我注册时,程序运行平稳。所以我猜我的OCX清单没有正确设置,或者需要额外的附加组件,因为我严格遵循了MSDN教程

编辑:我忘了在我用程序和类的未完成版本测试它时提到过这一点。然后,我向OCX添加了一些属性,并对EXE进行了一些UI改进。那就是它停止工作的时候

这是正在使用的EXE清单:
根据你的评论

当我用一个未完成的测试用例测试它时,这已经起作用了 程序和类的版本。然后我添加了一些属性到 OCX和对EXE进行了一些UI改进。就在那时 停止工作

看来问题一定是源于编译的OCX和一个或两个清单文件之间的不一致

从您发布的代码中,突出的是您的OCX清单:

<typelib tlbid="{F24DF9F0-C974-4307-A096-3A006918FB86}"
       version="1.0" helpdir=""/>
                ^^^

^^^
但是对于相同的GUID,IDL有
版本(2.0)
。我将查看更改清单以使它们同步是否可以解决此问题

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" 
  manifestVersion="1.0">

<assemblyIdentity
   type="win32"
   name="ColorManagementControls.ocx"
   version="1.0.0.0" />

<file name = "ColorManagementControls.ocx">

<comClass
    clsid="{F25E6EEC-9586-4606-B0F3-D3601F59CD33}"
    threadingModel = "Apartment" />

<typelib tlbid="{F24DF9F0-C974-4307-A096-3A006918FB86}"
       version="1.0" helpdir=""/>

</file>

<comInterfaceExternalProxyStub 
    name="_udcColorScroll" 
    iid="{18EBDF4B-F66A-422F-99AF-C968FE10F494}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid = "{F24DF9F0-C974-4307-A096-3A006918FB86}" />

</assembly>
// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: ColorManagementControls.ocx

[
  uuid(F24DF9F0-C974-4307-A096-3A006918FB86),
  version(2.0),
  helpstring("vbpColorManageControls")
]
library vbpColorManageControls
{
    // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    interface _udcColorScroll;
    dispinterface __udcColorScroll;

    [
      odl,
      uuid(18EBDF4B-F66A-422F-99AF-C968FE10F494),
      version(1.0),
      hidden,
      dual,
      nonextensible,
      oleautomation
    ]
    interface _udcColorScroll : IDispatch {
        [id(0x40030000), propget]
        HRESULT HideCursor([out, retval] VARIANT_BOOL* HideCursor);
        [id(0x40030000), propput]
        HRESULT HideCursor([in] VARIANT_BOOL HideCursor);
        [id(0x40030001), propget]
        HRESULT ClipOnClick([out, retval] VARIANT_BOOL* ClipOnClick);
        [id(0x40030001), propput]
        HRESULT ClipOnClick([in] VARIANT_BOOL ClipOnClick);
        [id(0x68030005), propget]
        HRESULT ColorOut([out, retval] OLE_COLOR* );
        [id(0x68030004), propget]
        HRESULT Value([out, retval] single* );
        [id(0x68030004), propput]
        HRESULT Value([in] single );
        [id(0x68030003), propget]
        HRESULT StartColor([out, retval] OLE_COLOR* );
        [id(0x68030003), propput]
        HRESULT StartColor([in] OLE_COLOR );
        [id(0x68030002), propget]
        HRESULT EndColor([out, retval] OLE_COLOR* );
        [id(0x68030002), propput]
        HRESULT EndColor([in] OLE_COLOR );
        [id(0x68030001), propget]
        HRESULT Orientation([out, retval] eColPickOrientation* );
        [id(0x68030001), propput]
        HRESULT Orientation([in] eColPickOrientation );
        [id(0x68030000), propget]
        HRESULT BorderStyle([out, retval] eColPickBorderStyle* );
        [id(0x68030000), propput]
        HRESULT BorderStyle([in] eColPickBorderStyle );
    };

    [
      uuid(F25E6EEC-9586-4606-B0F3-D3601F59CD33),
      version(1.0),
      noncreatable,
      control
    ]
    coclass udcColorScroll {
        [default] interface _udcColorScroll;
        [default, source] dispinterface __udcColorScroll;
    };

    [
      uuid(CE70501E-3905-4718-A1A9-FF3C844A8286),
      version(1.0),
      hidden,
      nonextensible
    ]
    dispinterface __udcColorScroll {
        properties:
        methods:
            [id(0x00000001)]
            void Change([in, out] tColorScll* hoverInf);
            [id(0x00000002)]
            void Scroll([in, out] tColorScll* hoverInf);
    };

    typedef [uuid(66A38F2E-D6C2-49D3-BD5B-EF68DF34CECE), version(1.0)]
    enum {
        CPB_NONE = 0,
        CPB_SINGLE = 1,
        CPB_SINGLESHADED = 2,
        CPB_DOUBLE = 3,
        CPB_DOUBLESHADED = 4
    } eColPickBorderStyle;

    typedef [uuid(206F68AB-F66C-4BD9-AD43-82355A403A4E), version(1.0)]
    enum {
        CPO_HORIZONTAL = 0,
        CPO_VERTICAL = 1
    } eColPickOrientation;

    typedef [uuid(746EB8A7-B27D-44AF-B179-AE862424BC6E), version(1.0)]
    struct tagtColorScll {
        [helpstring("ColorScroll")        
]
        OLE_COLOR ColorScroll;
        [helpstring("LocScroll")        
]
        single LocScroll;
    } tColorScll;
};
<typelib tlbid="{F24DF9F0-C974-4307-A096-3A006918FB86}"
       version="1.0" helpdir=""/>
                ^^^