問題タブ [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.
delphi - QueryInterfaceを使用したDelphiでのこの動作に気付いた人はいますか?
これが私のタイプです...
そして、これが例を実行するための私のコードです...
QueryInterfaceの最初の呼び出しでは、「f」変数に間違ったタイプのインターフェイスを割り当てていても、それが指すメソッドとは対照的に、それが指しているものの「最初の」メソッドを実行しようとするようです。名前は「TestFoo1」です。f:= fbを使用すると期待どおりに機能するので、構文f:= fbの代わりにQueryInterfaceを使用する理由はありますか?
ruby-on-rails - Rails3で「will_paginate」をlazyloadにする方法は?
rails3では、ほとんどすべてのクエリインターフェイスが遅延読み込みに変更されていますが、「paginate」メソッドを使用するとすぐに「will_paginate」がデータベースにヒットします。どうすればそれをlazyloadレコードにすることができますか?
c++ - IconnectionPointおよびEventHandlingとは何ですか
これが何であり、どのようにこれがEventHandlingIConnectionPoint
に接続されているかIConnectionPointContainer,IEnumConnectionPoints,IEnumConnections
を理解しようとしています。
次のような他の方法について説明しているMSDNおよびCodeProjectの記事を読んでくださいQueryInterface()
。
これらすべてのもの()がどのようIConnectionPointContainer,IEnumConnectionPoints,IEnumConnections
に相互に関連し、イベント処理を行っているのか理解できません。
COMオブジェクトでイベントをトリガーするsimpleClientを作成したいだけです。
単純で小さなコードのチャンクで物事が互いにどのように関連しているかを説明できる記事やコードスニペットがある場合は、役に立ちます。
初心者のCで最近開発を始めたことは言うまでもありません。
@sharptoothを編集する
行" typically your client will receive events and the COM object will trigger those events
。 "の場合
多くの記事から、私が理解したのは、その時点で接続ポイントを使用するとき
the client exposes a set of methods that the server uses
です。
TechRepublichの記事の一部を概説しています。
クライアントサーバーとシンクソース
したがって、標準のクライアントサーバーシステムでのCOMを使用した通常のプログラミングと接続ポイントの使用の主な違いは、標準のクライアントサーバーの場合、サーバーはクライアントが採用するメソッドのリストを公開し、接続ポイントの場合はクライアントは、サーバーが使用する一連のメソッドを公開します。
.net - .NET 3.5 のカスタム QueryInterface を実行するにはどうすればよいですか?
COM に公開されている .NET アセンブリがあり、カスタム QueryInterface を作成したいと考えています。そうしないと、クラスに多くのインターフェイスを実装する必要があります。
現在、私の実装はこのようなものです
クラスでこれらのインターフェイスを実装しないようにしたいのですが、要求されたインターフェイスを実装するオブジェクトを返すために QueryInterface が呼び出された場合。この機能が .NET Framework 4.0 に存在することは知っています ( ICustomQueryInterfaceを参照)。残念ながら、3.5 で行う必要があります。
python - Python、ArcObjects、および .AppRef: IAppROT から IMxDocument に取得する方法は?
現在の ArcGIS 10.0 ArcMap セッションへの参照を (ArcObjects COM 経由で) 取得する必要がある外部 Python/comtypes スクリプト (PythonWin) を作成しています。スクリプトはアプリケーション境界の外にあるため、AppROT (実行中のオブジェクト テーブル) を介してアプリケーション参照を取得しています。以下の最初のコード スニペットは、メインの Python ドライバー モジュールです。これは、AppROT からアプリケーション参照を取得する関数 GetApp() です。このコードは問題なく動作し、シングルトンの AppRef オブジェクトで IApplication を返します。理にかなっており、それが ArcObjects リファレンスが示しているようです。今、私の主な目標は、IMxDocument に到達することです。メイン ループでは、IDocument に正常に到達し、タイトルを印刷できます。ただし、次のクエリ インターフェース行はエラーをスローします - NameError: name 'esriArcMapUI' is not defined. エラーは、PythonWin を閉じて再度開いた後でも一貫して発生します (問題があると結論付ける前に、常に試してください)。[ところで、2 番目のコード スニペットは QI の CType() 関数であり、SignHelpers.py モジュールで定義され、そこからインポートされます。] それで、ここに私の質問があります。
(1) IDocument が存在する COM オブジェクトは?
(2) IDocument から目的の IMxDocument に移動するにはどうすればよいですか? 最初に新しい MxDocument オブジェクトを作成する必要がありますか? [ごめん。2 つの質問があります。]
(3) 新しいオブジェクトを作成する必要がない場合、QI はどのように行うのですか?
私は数年前に VB6 で多くの ArcObjects の作業を行ったので、現時点では明示的な QI と名前空間が問題になっています。IMxDocument にたどり着いたら、家から解放されます。誰でもこれで私に与えることができる助けをいただければ幸いです。
また、以下のコードのフォーマットについてお詫び申し上げます。Python コードを正しくフォーマットする方法がわかりませんでした。インデントが機能せず、Python コードの一部が書式設定文字として解釈されます。
c++ - 成功したすべての QueryInterface() 呼び出しの後に Release() 呼び出しが続くのはなぜですか?
QueryInterface()
呼び出しの後に常に呼び出しが続くのはなぜRelease()
ですか? たとえば、MSDN のサンプル コードは次のとおりです。
Release()
誰かがここでの呼び出しの背後にある意図を説明できますか?
api - RFCOMAPIlib (RightFax COM API) の使用: COM オブジェクトをキャストできません
私は RightFax COM API を使用しています。私がやりたいことは、単に添付ファイル付きの FAX を送信することです。シンプルですよね?その質問は何度か答えられています。ただし、アプリケーションでそのコードの一部を使用すると、少し問題が発生します。
アプリケーション: RightFax 9.4
言語: C# (ASP.NET アプリケーション)
IDE: MS Visual Web Dev. Express
ターゲット フレームワーク: .NET 3.5
OS: Windows 7
サーバーの名前を通り過ぎることさえありません。
例外の詳細:
タイプ 'RFCOMAPILib.FaxServerClass' の COM オブジェクトをインターフェイス タイプ 'RFCOMAPILib.Form' にキャストできません。IID '{9F386618-764B-48F8-A5BF-3682B03DE840}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーにより失敗したため、この操作は失敗しました: No such interface supported (HRESULT からの例外: 0x80004002 (E_NOINTERFACE)) .
そう。助言がありますか?
com - IUnknown :: QueryInterface()は参照カウントをインクリメントしますか?
を持っている場合、終了時に呼び出すことに加えて、を介して取得するすべてのインターフェイスをIUnknown *ptr
呼び出す必要がありますか?Release()
ptr->QueryInterface()
ptr->Release()
ptr
以前は答えは「はい」だと思っていましたが、MSDNからのこの引用は私を混乱させました。
場合によっては、オブジェクトへの弱参照を取得する必要があります(つまり、参照カウントをインクリメントせずにそのインターフェイスの1つへのポインターを取得したい場合があります)が、その後に.を呼び出してこれを行うことはできません
QueryInterface
Release
。
なぜそれが問題になるのかわかりません-ptr->QueryInterface()
呼び出しRelease
てから結果のポインタを呼び出す場合、オブジェクトの参照カウントはまだ正の値であるべきではありませんか?それはどのようにして無効なポインタになりますか?
delphi - XE2 で IDispatch をキャストするアクセス違反
古いコード (Binh Ly によって作成された ComLib.pas) を使用しているため、(OleVariant) オブジェクトで列挙型インターフェイスを使用できます。
このコードは、Delphi 2010 および 2007 では機能しますが、XE2 では機能しません。上記の行 (コメント「RAISES EXCEPTION」を含む) で、例外が発生します。
プロジェクト x.exe は例外クラス $C0000005 を発生させ、メッセージ「0xbaadf00d でのアクセス違反: アドレス 0xbaadf00d の読み取り」が発生しました。
渡されたオブジェクトには TDispNewEnum インターフェイスがあるため、例外は発生しません(Delphi 2010 および 2007 の場合と同様)。
提案?ありがとう。
com - COMオブジェクトでPowershellクエリインターフェイスを実行する方法
Powershell を使用して COM オブジェクトを作成しました。
次に、そのオブジェクトのインターフェイス"MyLib.MyInterface"
にクエリを実行する必要がありますが、PowerShell でそれを行う方法がわかりません。
順番に、以下の C++ コードがあるとします。
Powershell で同じ作業を行うにはどうすればよいですか
コメントはありますか?
ありがとう