提取附件时,VB.net中的LotusNotes中的System .__ ComObject

时间:2016-08-01 13:57:59

标签: vb.net lotus-notes attachment com-object

我想访问Lotus Notes数据库并从其中的文档中获取附件。 我可以打开数据库和doc并遍历所有项目。 问题是,我不能将这些项目用作NotesRichTextItem,因此不检查是否有任何item.EmbeddedObject。 我想这是项目声明的问题。 一般来说:如果我使用VS2010进行调试,doc和数据库以及NotesSession都有“value”系统.__ ComObject和“type”是它应该是Domino.Notes对象。 例如观察文件:

Name   VALUE                 TYPE     
doc    {System.__ComObject}  Domino.NotesDocument

但如果我使用doc.GetType()命令,则结果为

doc.GetType()  = {Name = "__ComObject" FullName = "System.__ComObject"} 

由于我不知道我的doc.item是否是一个NotesRichTextItem,我将其定义为一个对象,并希望事后检查是否为type。我不能,因为函数的返回值也如上所述。 这是我目前使用的完整代码,我从COM部分加载了Lotus Domino引用。

Public Sub OpenDocumentLN()
        Try
      Dim ns As New Domino.NotesSession
      Dim db As Domino.NotesDatabase
      Dim doc As Domino.NotesDocument
      Dim view As Domino.NotesView

      If Not (ns Is Nothing) Then
        ns.Initialize()
        db = ns.GetDatabase("", sLotusNotesPath & sLotusNotesDB, False)
        If Not (db Is Nothing) Then
          view = db.GetView(sLotusView)
          doc = view.GetFirstDocument
          While Not doc Is Nothing
            Dim lnNextDoc As Domino.NotesDocument = view.GetNextDocument(doc)

            For Each item As Domino.NotesItem In doc.Items
              Dim rtItem As Object = doc.GetFirstItem(item.Name)

              If rtItem Is Nothing Then Continue For
             If Not rtItem.GetType() = GetType(Domino.NotesRichTextItem) Then Continue For
             ' NEVER reach this part of the code since the IF clause prevents it due to the type problem
              If rtItem.EmbeddedObjects Is Nothing Then Continue For
              For Each o As Domino.NotesEmbeddedObject In rtItem.EmbeddedObjects
                o.ExtractFile(sLotusExportPath & o.Source)
              Next

            Next
            doc = lnNextDoc
          End While

        End If
        db = Nothing
        ns = Nothing
      End If
    Catch ex As Exception

    End Try
  End Sub

如何将我的rtitem用作NotesRichTextItem,以便我可以处理它?为什么所有对象都被处理为ComObjects?

0 个答案:

没有答案