1
  • コンソールアプリケーションとwpfアプリケーションがあります。
  • 両方のアプリケーションで、skype4com.dllリファレンスを追加しました

  • コード:SKYPE4COMLib.Skype oSkype = new SKYPE4COMLib.Skype();

与える:InvalidCastExeption述べる:

タイプ'System.__ComObject'のCOMオブジェクトをインターフェイスタイプ'SKYPE4COMLib.Skype'にキャストできません。IID'{B1878BFE-53D3-402E-8C86-190B19AF70D5}'のインターフェイスのCOMコンポーネントに対するQueryInterface呼び出しが、次のエラーのために失敗したため、この操作は失敗しました:そのようなインターフェイスはサポートされていません(HRESULTからの例外:0x80004002(E_NOINTERFACE)) 。

しかし、wpfアプリケーションで同じコード行を実行しても、例外は発生しません。どうして!?


Skypeが更新されるまで、コンソールアプリケーションは正常に動作していました。私はskypeをアンインストールし、問題を解決するために再度インストールしましたが、それは役に立ちませんでした。

4

2 に答える 2

7

コンソールアプリのクライアントプロファイルを使用せず、完全な.Netバージョンに設定します。

プロジェクトのプロパティ->アプリケーション->ターゲットフレームワーク(ドロップダウン)-> .Net Framework 4に設定して変更します(実行している.netのバージョンの場合)

于 2012-01-16T18:47:02.337 に答える
0

長い時間をかけて試した後、必要な参照とクラスを追加して、wpfアプリケーションをコンソールアプリケーションにする場所を決めました。それから私は比較しました、そして私が追加した場合、私はそれに気づきました:

[System.STAThreadAttribute()]

それが機能する主な方法に!!!!!

結果として、私のメインメソッドは次のようになります。

システムを使用する; System.Collections.Genericを使用します。System.Linqを使用します。System.Textを使用します。

namespace ConsoleApplication3
{

    class Program
    {
        [System.STAThreadAttribute()]                
        static void Main(string[] args)
        {
            SKYPE4COMLib.Skype oSkype = new SKYPE4COMLib.Skype();
        }
    }
}

asp.netには、メインのメソッドはありません。私が知っているものではありません。そのため、asp.netでは、trueに等しいAspCompat属性を追加する必要がありました。

したがって、私のasp.netaspxページは次のようになります。

    <%@ Page AspCompat="true" Language="C#" .... etc
于 2012-01-17T03:50:26.180 に答える