Converting VB6 PropertyBag in .NET

前端 未结 3 673
自闭症患者
自闭症患者 2021-01-22 03:45

For certain file operations we use VB6\'s PropertyBag object to convert various items to a bytearray via the Content property. We then save the bytearray as part of a binary fil

相关标签:
3条回答
  • 2021-01-22 03:56

    You can check out Edanmo's Load and save pictures to byte arrays sample on his old VB6 sample page. It's very simple and can be used to "serialize" any object that implements IPersistStream interface like ADODB.Recordset for example. VB6's PropertyBag is using IPersistStream for objects and probably implements "custom" VT_Xxx variant-types serialization.

    Btw, Edanmo's code snippet allows you to read images stored via copy/paste to an image column of an Access grid.

    0 讨论(0)
  • 2021-01-22 03:59

    It is worth pointing out that you can directly access the VB6 PropertyBag from .NET by referencing the VB6 runtime DLL in your project.

    Add a reference to: C:\WINDOWS\SysWow64\MSVBVM60.DLL (or might by in System32 folder)

    and you will then see PropertyBag in the object browser:

    Note that this VB6 class does not have functionality for reading/writing to disk files, byte arrays, etc. It only manages the in-memory data (AFAIK). So this alone does not solve the issue of how to save/load data in whatever format the PropertyBag was stored in.

    0 讨论(0)
  • 2021-01-22 04:02

    There is 0 support for PropertyBags in .NET. Serailisation of objects replaces the PropertyBag construct.

    So as I see it you have 2 choices.

    1. Byte the bullet and write the 10 or 20 line Interop dll.
    2. Analyse the contents of the serialised property bag and see if you can decode it and figure out the offsets of the images and streams etc.

    I know which one I'd be heading for.

    0 讨论(0)
提交回复
热议问题