Skip to main content
SayMiwa
Participant
March 7, 2018
質問

Visual Studio からのCOMオブジェクト呼び出し

  • March 7, 2018
  • 返信数 1.
  • 14107 ビュー

Win7 + Visual Studio 2015  + InDesign CS6 のときには

InDesign.Application inddApp = (InDesign.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Indesign.Application"));

が成功してinddAppに情報を収録できるのですが、 Win10 + Visual Studio 2015  + InDesign CS6 や Win10 + Visual Studio 2015  + InDesign CC(2018)のときは

「追加情報:型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'InDesign.Application' にキャストできません。IID '{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。」

となります。

どうしたら、InDesign.Applicationを取得できるのか、どなたか教えてください。

よろしくお願いいたします。

    このトピックへの返信は締め切られました。

    返信数 1

    Omachi
    Legend
    March 7, 2018

    CS6については、次のページの最後の方を確認してください。

    参照設定でエラーが出る場合の対処法

    これに加えて、バージョンを8.1に上げている場合は

    C:\ProgramData\Adobe\InDesign\Version 8.0-J\ja_JP\Scripting Support\8.0\Resources for Visual Basic.tlb

    のSupport\のあとの8.0が8.1になっているはずですのであわせて確認してください。

    CC2018で同様のトラブルには遭遇したことがないのですが、

    レジストリの

    \HKEY_CLASSES_ROOT\TypeLib\{76D0151D-8121-4BB3-9B29-4D137776EE97}\1.0\0\win32

    のパスが正しいか確認してください。

    SayMiwa
    SayMiwa作成者
    Participant
    March 8, 2018

    Omachiさん

    情報提供ありがとうございます。

    紹介いただいたページは既に閲覧済みでtlbの参照は成功しています。

    まだ、検証の途中ですがWin10 + Visual Studio 2015  + InDesign CC(2018)で成功したので皆さんに紹介しておきます。

    キャストができない理由はもっと深い(?別のレジストリキーとか)ところに原因があったようです。

    提供した情報が不足していて申し訳なかったのですが、正常に稼働していた Win7 + Visual Studio 2015  + InDesign CS6 の InDesignは Adobe Creative Cloud経由のインストールではありませんでした。今行っているのはAdobe Creative Cloud経由のインストールで、個人的にはUACが働かなく「大丈夫なのかな?」と思っておりました。

    UACを無効にしてAdobe Creative Cloud経由のインストールをしたところ期待通りにキャストできるようになりました。

    UACを有効にしているユーザーがAdobe Creative Cloud経由でインストールした場合、InDesignのアプリは起動するものの、どこかで不整合が発生しているかもしれません。

    各人の自己責任でお願いしますが、一旦UACを無効にしてインストールするとレジストリへ必要な情報が書き込まれるはずです。

    SayMiwa
    SayMiwa作成者
    Participant
    November 16, 2018

    このスレッドにたどり着いた方へ追加の情報です。

    2018年10月にリリースされた InDesign CC 14.0 ( InDesign CC 2019 ) だとレジストリのHKEY_CLASSES_ROOT\Interfaceに必要な情報が書き込まれないため

    「追加情報:型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'InDesign.Application' にキャストできません。IID '{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。」

    が発生します。インストーラー自体の問題のようで、旧バージョンの CC 2018 をインストールしてもレジストリに情報が書き込まれません(2018年11月16日現在)。

    CC 2018の場合

    [HKEY_CLASSES_ROOT\Interface\{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}]

    @="_Application"

    [HKEY_CLASSES_ROOT\Interface\{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}\ProxyStubClsid32]

    @="{00020420-0000-0000-C000-000000000046}"

    [HKEY_CLASSES_ROOT\Interface\{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}\TypeLib]

    @="{A3BB4322-FF1B-4E64-A801-0998CF133906}"

    "Version"="1.0"

    を登録すればInDesign.Applicationが救済されますが、InDesign.Document等の他のInterface情報も登録しないとだめです。私の場合、正常に稼働しているPCのレジストリから必要なInterface情報を全て切り出して新PCに適用しました。

    ※レジストリの修正は各自の責任でお願いいたします。