Top > OOobbs2 > 125

OOobbs2/125 Edit

  • サマリ: Basicと外部制御(OLEオブジェクトの編集解除)
  • 環境: Other
  • 状態: 未解決
  • 投稿者: セルダン?
  • 投稿日: 2008-08-12 (火) 17:29:52

質問 Edit

Basicで以下のコードを実行すると実行可能なのですが、

oDoc = ThisComponent
oEmbeded = oDoc.getEmbeddedObjects().getByIndex(0)

oExtEmbedded = oEmbeded.ExtendedControlOverEmbeddedObject()
oExtEmbedded.doVerb(-3)

これを外部からC#で制御しようとしています。

その場合プログラムは以下のようになると思うのですが、doVerb(-3)を実行したところでOpenOfficeが応答無しになってしまいます。

このようにBasicでは出来て外部から制御できないということはあるのでしょうか?

これを解決する方法が有るのでしょうか? 場違いの質問でしたら申し訳ありません。

// OLEオブジェクトを編集モードに
unoidl.com.sun.star.text.XTextEmbeddedObjectsSupplier xEmbeddedObjectsSupplier = unoidl.com.sun.star.text.XTextEmbeddedObjectsSupplier)textDocument;
// 埋め込みオブジェクトのコレクションを取得します。
unoidl.com.sun.star.container.XNameAccess xNamedEmbeddedObjects = xEmbeddedObjectsSupplier.getEmbeddedObjects();
uno.Any EmbeddedObject = xNamedEmbeddedObjects.getByName("オブジェクト1");
unoidl.com.sun.star.document.XEmbeddedObjectSupplier2 os2 = (unoidl.com.sun.star.document.XEmbeddedObjectSupplier2)EmbeddedObject.Value;
unoidl.com.sun.star.embed.XEmbeddedObject eo = os2.getExtendedControlOverEmbeddedObject();
eo.doVerb(-3);

回答 Edit

  • python から pipe 接続して doVerb(-3) を呼び出すと正しく動作します。doVerb メソッドは四種類の例外を創出する可能性があるのでとりあえず例外をトラップしてみてはどうでしょうか?C# はよくわかりませんが、CLI ブリッジを通過しますが doVerb の引数が long 型でないと・・・。 -- はにゃ? 2008-08-13 (水) 02:45:39

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes