問題タブ [queryinterface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
886 参照

vba - インターフェイスVBA._CollectionのQueryInterfaceが失敗しました

システムの長時間の実行中に、このエラーがランダムに発生します。エラーはアラームシステムによって検出され、正常に再試行して、システムの実行を続行します。Googleで見つかった唯一のヒットは、破損したインストールについて言及しているようです。私たちのシステムは実行中であり、エラーが発生し、実行を継続できるため、ここではこれが当てはまるとは思われません。

0 投票する
1 に答える
1133 参照

vb.net - インターフェイスのクエリ インターフェイスが失敗しました

1.1 VB.NET コードで相互運用 COM アセンブリを使用しています。クラスのプロパティを設定しようとすると、 "QueryInterface for Interface … failed"InvalidCastExceptionというメッセージが表示されます。

これに関するアイデアはありますか?

0 投票する
1 に答える
512 参照

mfc - IID_IPersistStreamInit の QueryInterface メソッドが機能しなくなった

HTML ドキュメントのデータを解析するために使用しているアプリケーションがあります。アプリケーションは、IID_IPersistStreamInit の QueryInterface メソッドが失敗し始めた今週まで、数年間動作していました。QueryInterface への呼び出しは -2147467262 を返し、SUCCEEDED(hr) テストに失敗します。これが機能しなくなった理由はありますか?

ありがとう、ウェイド

0 投票する
1 に答える
340 参照

com - COM インターフェイスにアクセスできません

私はアプリケーション ドキュメント (ショッカー) のスキャンテストに取り組んでいますが、そこにあるものは誤解を招く/矛盾しているようです。ソフトウェア会社にも聞いてみますが、最後の返事は数週間かかりました。とりあえず……(ありがとう)……

Xyz と呼ぶ GUI アプリケーションの [疑いのある] COM インターフェイスにアクセスしようとしています。

私の質問: 以下の結果は、利用可能な COM インターフェイスがないこと、登録する必要があることなどを意味しますか?

ユーザーマニュアルの状態:

アプリの COM インターフェイス機能に関連する引用を 2 つだけ示します。

  1. 「Xyz は、COM (コンポーネント オブジェクト モデル) コンポーネントを使用する 32 ビット アプリケーションであるため、ネットワークから Xyz を実行します......」.

  2. 「Xyz.Interface COMオブジェクトにアクセスして、情報を照会し、好きな形式で表示できます」.

コード例 1:

Dim xyz_com Set xyz_com= CreateObject("Xyz.Interface") xyz_com.Visible=false

結果 1:

「オブジェクトはこのプロパティまたはメソッドをサポートしていません: 'Visible'」

コード例 2:

Dim xyz_com Set xyz_com= CreateObject("Xyz.Interface")

結果 2:

最初のアプリケーション画面が表示されます - 彼らが言うように「サーバーモード」でアプリケーションを起動している場合、画面が表示されるとは思いません。

コード例 3:

Dim xyz_com Set xyz_com= CreateObject("Xyz.Interface") xyz_com.QueryInterface()

結果 3:

「オブジェクトはこのプロパティまたはメソッドをサポートしていません: 'QueryInterface'」

0 投票する
1 に答える
1891 参照

c# - QueryInterface が COM インターフェイス実装内でのキャストに失敗する

C/C++ で記述された Dll を使用して、CAN ネットワーク (車内のネットワーク) のメッセージを取得するツールを c# で作成しています。この dll は、COM インターフェイスとして使用できます。

私の c#-formclass は、これらの COM インターフェイスの 1 つを実装しています。そして、他の変数は、これらの COM インターフェイスを使用してインスタンス化されます (すべてが完璧に機能します)。

問題: 私の C# フォームが実装するインターフェースには、3 つの抽象関数があります。これらの関数の 1 つは、dll によって呼び出され、自分で実装する必要があります。この関数では、COM タイプのフォーム全体の変数のプロパティを取得したいと考えています。

COM ライブラリは CANSUPPORTLib です

フォーム全体の変数:

この変数もフォーム全体であり、デバイス変数を介して取得されます。

dll によって呼び出され、c# で実装される関数

エラーは次の行で発生します。

エラー:

注: 必要なメッセージを 100 ミリ秒ごとにチェックするタイマー クロックを使用することは可能です。メッセージは、今とまったく同じ方法で取得されます。このタイマーは、フォームの開始時に開始されます。このチェックは、Message(double) が変数を true に設定した (メッセージが到着した) 場合にのみ行われます。

メッセージ機能でタイマークロックが開始されると、上記と同じエラーが発生します

フォームの開始時に別のスレッドを開始することもできません。

COM-interop の経験がある人はいますか?

このタイマーのとき

0 投票する
1 に答える
1111 参照

delphi - Delphiのサポートからのアクセス違反の例外->QueryInterface

私は次のコードを持っています:

このコードは、アプリケーションの実行中に何度も呼び出されますが、特定の場合には、Supports()メソッド内で失敗します。より具体的には、Supports()メソッド内のQueryInterface()呼び出しの中にあるようです。

FControlListがnilではなく、FControlList [i]がnilでないことを確認しましたが、それでも発生します。

どんなアイデアでも大歓迎です!!!

0 投票する
3 に答える
1777 参照

delphi - Delphi での GetInterface/QueryInterface 後のアクセス違反

まず、私は Delphi と COM の初心者ですが、Delphi で COM アプリケーションを作成する必要があります。インターネットで多くの記事やメモを読みましたが、COM と Delphi の COM はまだよくわかりません。

私のソース - http://www.everfall.com/paste/id.php?wisdn8hyhzkt (約 80 行)。

COM インターフェイスと Impl クラスを作成しようとしています。Delphi からインターフェイス メソッドを呼び出すと機能しますが (TestClient.Create を介して impl オブジェクトを作成します)、外界からオブジェクトを作成しようとすると (Java から、com4j を介して) ) 私のアプリケーションは次の例外でクラッシュしました:

QueryInterface にブレークポイントを設定すると、壊れますが、関数から出ると、すべてクラッシュします。

私が間違っていることは何ですか?私はまだ何が欠けていますか?このようなばかげた質問を避けるために、(Delphi の) COM について何を読むことができますか?

0 投票する
3 に答える
8992 参照

delphi - Delphi:IUnknownのQueryInterfaceを実装する方法は?

Delphiでは、次のIUnknownように宣言されています。

注:出力パラメーターは型指定されていません

私のTInterfacedObject子孫ではQueryInterface、を処理する必要があるので、要求されたインターフェイスをサポートするオブジェクトを返すことができます。

問題は次のようになります。

Delphiは文句を言います:

このオペランドタイプに適用できない演算子

明らかに、型指定されていない outパラメータにどのように、または何を割り当てるかはわかりません。コンパイラが文句を言うのをやめることを期待して、私はランダムに物事を試すことができます:

私が書いたすべてのコードを無視する(必要な場合):QueryInterfaceオブジェクトの子孫にどのように実装しますTInterfacedObjectか?


私が解決しようとしてきた本当の問題は、私がしたいことに要約することができます:

インターフェイスのメソッドをオーバーライドしたい

同じやり方で:

子孫クラスでオーバーライドできます:

私はインターフェースでも同じことをしたいです:

問題は、実装オブジェクトのロードをどのように開始する必要があるかということです。

そして、には2つのメソッドだけでなく、IFoo6つのメソッドがあります。次に、サポートされている別のインターフェイスを追加する場合は、次のようにします。

そして、物事は非常に速く扱いにくくなります。

0 投票する
1 に答える
3303 参照

c# - InvalidCastException、COM コンポーネントで QueryInterface 呼び出しが失敗する

現在開発中の .net アプリケーション (VS 2010、c#) で PCAnywhere の Ole オートメーションを使用しようとしています。PCA 12.5 にはいくつかの tlb ファイルが付属しており、VS を介して参照として追加しようとすると、両方で「'E:\Dev\PcaOle\awrem32.tlb への参照' を追加できませんでした」というエラーが表示されます。ファイルにアクセスできること、およびそれが有効なアセンブリまたは COM コンポーネントであることを確認してください。わかった。ここに私がこれまでに持っているコードのビットがあります:

CRemoteDataManagerClass、RemoteDataExClass、および AWREM32.Document は、アセンブリ内のクラスです。

data = (RemoteDataExClass)mng.RetrieveObjectEx("temp.chf", (short)2, null);そのため、5 行目 ( ) で次のような例外が発生します。

タイプ「winawsvr.CRemoteDataManagerClass」の COM オブジェクトをインターフェイス タイプ「winawsvr.IRemoteDataManager」にキャストできません。IID '{82A1A806-8BA9-11CF-B95F-00A02412C812}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーのために失敗したため、この操作は失敗しました: Interfaz 互換性がありません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。

ここで何が欠けているのでしょうか? COM コンポーネントの登録方法に問題があるのでしょうか。以前は、regasm.exe に登録しようとする前に、CLSID だけが LocalServer32 キーを持っていました。regasm.exe を実行した後、InprocHandler32 と InprocServer32 の 2 つが作成されたと思います。前後に同じ例外が発生しました。

STA アパートメント状態に設定されたスレッド内で呼び出しコードを実行する必要があることをどこかで読みました。だから私はしました。まだ変化なし。

私が気付いたもう 1 つのことは、失敗したクラスが配置されている相互運用アセンブリに対して ildasm.exe を実行したときに、IRemoteDataManager 内に次の行が表示されることです.custom instance void [mscorlib]System.Runtime.InteropServices.GuidAttribute::.ctor(string) = ( 01 00 24 38 32 41 31 41 38 30 36 2D 38 42 41 39 // ..$82A1A806-8BA9 ...。TLB を使用する IRemoteDataManager には82A1A806-8BA9-11CF-B95F-00A02412C812、例外に記載されている GUID と同じ GUID があります。この GUID の最初の 2 つのセクションは、ildasm から言及したその行にあります (残りは表示の問題のために切り取られているだけだと思います)。そこでもすべて問題ないようです。

CRemoteDataManagerClass の代わりに CRemoteDataManager (IRemoteDataManager を実装するインターフェイス) を使用してみましたが、同じです。どちらの場合も、例外は常に CRemoteDataManagerClass に言及しています。ildasm で確認できることから、CRemoteDataManagerClass は CRemoteDataManager と IRemoteDataManager の両方を実装しています。QueryInterface が 2 つのうちの 1 つ、またはまったく別の何かで失敗している可能性があります。

知らない。私は明らかにここのいたるところにいます。

相互運用ログも調べて、正確に QueryInterface が失敗した理由を確認しましたが、.netcompactframework でそれを行う方法に関するドキュメントしか見つかりませんでした。