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

使用StgOpenStorage以只读方式打开OLE复合文档

  •  1
  • Joril  · 技术社区  · 16 年前

    我使用XP下的StgOpenStorage API来读取OLE复合文档,但我找不到合适的标志组合来告诉Windows我只需要 该文件不会阻止任何其他进程访问它。..
    STGM_READ | STGM_EXCLUSIVE STGM_READ | STGM_SHARE_DENY_NONE 但它抱怨标志无效。。

    有办法做到这一点吗?我走错路了吗?

    提前感谢!

    (如果相关的话,我将通过pythoncom从Python调用API)

    1 回复  |  直到 16 年前
        1
  •  2
  •   Twenty Oded    6 年前

    这只是猜测,但根据StgOpenStorage API文档:

    当指定STGM_DIRECT标志时,只有以下组合之一 可以从访问和共享组中指定标志

    STGM_READ | STGM_SHARE_DENY_WRITE
    STGM_READWRITE | STGM_SHARE_EXCLUSIVE
    STGM_READ | STGM_PRIORITY
    

    请注意,没有STGM_TRANSACTED意味着直接模式。 也就是说,如果既未指定STGM_DIRECT也未指定STGM_TRANSACTED,则STGM_DIRECT 假设。

    这表明将旗帜更改为

    STGM_READ | STGM_SHARE_DENY_NONE | STGM_TRANSACTED