Lotus Notesクライアントによって提供されるCOMクラスにアクセスしようとしています。 Pythonでは、これはwin32com.client
のlibと非常に簡単でした:ゴーで今GolangのCOM経由でLotus Notesとのインタフェース
def initialize_notes(self):
"""
Initializes an object from the class.
:return: Lotus Notes database
"""
notes_session = win32com.client.Dispatch('Lotus.NotesSession')
notes_session.Initialize(self.notes_password)
notes_database = notes_session.GetDatabase(self.domino_server, self.domino_db)
return notes_database
、私は成功していません。以下は私のコードです
import (
"github.com/go-ole/go-ole"
"github.com/go-ole/go-ole/oleutil"
)
func Connect(dominoServer, database, notesPassword string) (*ole.IDispatch, error) {
ole.CoInitialize(0)
unknown, err := oleutil.CreateObject("Lotus.NotesSession")
if err != nil {
panic(err)
}
notes, err := unknown.QueryInterface(ole.IID_IDispatch)
if err != nil {
panic(err)
}
session := oleutil.MustCallMethod(notes, "Initialize", notesPassword).ToIDispatch()
db := oleutil.MustCallMethod(session, "GetDatabase", dominoServer, database).ToIDispatch()
return db, nil
}
次のエラーのあるパニックpanic: Class not registered
。 PowerShellとPythonの両方のバージョンの関数が問題なくそれにアクセスできるので、クラスは登録されています。
私は間違っていますか?
どの操作でパニックが発生しますか? – captncraig
@captncraigよく、クラスをロードできないため、最初の 'panic(err)'でパニックが発生します。 – rhillhouse
CreateObjectは特定のレジストリキーを介してClassIDを参照するユーティリティです。 [関連コード]のコメントを参照してください(https://github.com/go-ole/go-ole/blob/8a4f5c214bfb4475619b8bb7ccbe6fa5c91745f4/com.go#L105)私はそれが登録されていないと思います。わずかに異なるもの。 – captncraig