問題タブ [iconnectionpoint]

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 投票する
5 に答える
8065 参照

c# - C# で COM イベントに接続 - マネージド サーバーとアンマネージド サーバーの両方をサポート

COM イベントに接続する必要がある C# コードを書いています。IConnectionPointContainer と IConnectionPoint の使用を次のように実装しました。

問題は、COM サーバーが実際に .Net (C# など) で実装されている場合、.Net がそれを作成した後、それを COM オブジェクトではなく .Net オブジェクトとして処理することです。.Net オブジェクトは IConnectionPointContainer インターフェイスを実装していないため、オブジェクトをそのインターフェイスにキャストしようとすると null が返されます。

どうすればこれを回避できますか?もちろん、IConnectionPointContainer を自分で C# COM サーバーに実装することもできますが、COM サーバーを実装する必要がある他の開発者に簡単に説明できる、より単純なソリューションが必要です。

PS COM サーバーは非 .Net (C++、Java) で実装される可能性があるため、IConnectionPointContainer を使用する必要があります。

ありがとう、インバー

0 投票する
2 に答える
907 参照

delphi - DelphiでConnectionPointを実行するにはどうすればよいですか?

IDispatchインターフェイスを介してExcelと通信するDLLを作成しています。VBAApplication.Callerから、を介してIDispatchポインタを描画するバリアントを渡します.pDispVal

私が知りたいのは、そのIDispatchポインターを介してインターフェースを照会する方法です。接続ポイントコンテナを設定し、そこからExcelへの接続ポイントを見つけます。最終的な目標は、ExcelのCalculateイベントに物事を結び付け、Excelデータを操作できるようにすることです。

0 投票する
2 に答える
389 参照

delphi - 自動化オブジェクトがメモリリーク(TConnectionPoints)

メモリリークを引き起こすイベントサポート付きの自動化オブジェクトがあります。生成されたソースに付属するFConnectionPointsが解放されることはありません。デストラクタにFConnectionPoints.Freeを手動で追加すると、リークがなくなります。

FastMMBorlandMM.dllとFastMM_Fulldebugmode.dllを使用してDelphi7を使用しています。

再現する手順:

  1. 新しいActiveXライブラリプロジェクトを開始します
  2. 新しい自動化オブジェクトを追加します。Name=TestObject; 「イベントサポートコードの生成」にチェックを入れます
  3. TypeLibraryを開き、ITestObjectにメソッドを追加し、ITestObjectEventsにイベントを追加します
  4. 更新すると、コードが生成されます。
  5. .dprファイルの最初のユニットとしてShareMemを追加します
  6. このActiveXサーバーを保存、コンパイル、登録します([実行]メニュー)
  7. 新しいアプリケーションプロジェクトを開始します
  8. ShareMemを.dprファイルの最初のユニットとして配置します
  9. タイプライブラリユニットのインポート:手順6で作成したdllからユニットを作成し、[コンポーネントラッパーの生成]をオンにします。
  10. FormCreateに、次のコードを追加します。

コード:

次に、このアプリケーションをコンパイルして実行し、閉じます。メモリリークが報告されます。

質問:

これはDelphiコードテンプレートのバグですか、何か間違ったことをしていますか、それともFConnectionPointsを自分で解放することを目的としていますか(ヘルプには記載されていません)?

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

c# - .NET から COM サーバーのイベントにアタッチすると、E_ACCESSDENIED 例外が発生する

IConnectionPoint イベントを実装する C++/ATL COM サーバーがあります。私のクライアントは、イベントにアタッチする C# アプリケーションです。COM サーバーが SYSTEM サービスとして作成されると、クライアントはイベントに適切にアタッチできます。COM サーバーが LocalService サービス (推奨) として作成されている場合、イベントにアタッチすると E_ACCESSDENIED 例外が発生します。

COM サーバーが LocalService の場合にイベントを機能させるにはどうすればよいですか?

ありがとう。

0 投票する
2 に答える
3633 参照

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を使用した通常のプログラミングと接続ポイントの使用の主な違いは、標準のクライアントサーバーの場合、サーバーはクライアントが採用するメソッドのリストを公開し、接続ポイントの場合はクライアントは、サーバーが使用する一連のメソッドを公開します。

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

c# - COM イベントのハンドラーを設定するときの InvalidCastException

イベントを発生させるように設定されたアンマネージ C++ COM サーバーがあり、C# アプリからこれらのイベントを処理しようとしています。

ただし、ハンドラーをセットアップするときに InvalidCastException が発生します

スタック トレースは次を示します。

指定されたキャストは無効です。System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise (オブジェクト pUnkSink、Int32 & dwCookie) で MyCOMSource_EventProvider.add_MyCOMEvent (MyCOMSource_MyCOMEventHandler) で MyCOMSource_Event.add_MyCOMEvent (MyCOMSource_MyCOMEventHandler) で

このように独自の IConnectionPoint を設定しようとしました

wheremyEventNotifierは、次のように定義されたクラスのオブジェクトです。

connectionPoint.Adviseしかし、スタックトレースで同じ InvalidCastException を取得します

指定されたキャストは無効です。System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise (オブジェクト pUnkSink、Int32 & pdwCookie) で

私はこれがクライアント側の問題であると想定しています。なぜなら、私が独自の ConnectionPoint を実行しようとしたときと、フレームワークにそれを実行させたときの動作が一貫しているためです。しかし、それがサーバー側の何かである場合:

COMサーバー側では、このように宣言しました

クラスにもCONNECTION_MAPCONNECTION_PARTマクロが配置されています。

どうすればこれをデバッグできますか?

0 投票する
2 に答える
9362 参照

c# - IConnectionPoint イベント ハンドラー内で WPF ボタンを表示するように設定する

私は C# と WPF プログラミングにかなり慣れていませんが、現在、この問題が頭を悩ませています。

プログラムの実行内容:プログラムは、顧客が自分の名前を入力できるテキスト ボックスのあるウェルカム画面を表示します。デバイスがワイヤレス LAN アクセス ポイントに近づき、正常に接続されると、このメイン ウィンドウの [開始] ボタンが表示されるはずです。

何が機能していないか:イベント ハンドラー内でボタンの可視性を設定しています。新しいスタイルは適用されません。さらに、可視性属性/プロパティ(?)を設定した後に他のコードを呼び出そうとすると、実行されません(visibを設定する直前にMessageBox.Showを配置すると、設定後に配置すると表示されます)プロパティ、このコードに到達することさえありません)。

コード:

これはボタン要素です:

これは、MainWindow.xaml.cs 内のイベント ハンドラーの登録です。

最後に、イベント ハンドラー:

それだけです - あなたが私を助けてくれることを願っています。

どうぞよろしくお願いいたします。

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

c# - IConnectPoint Unadvise を使用して通知の受信を正しく登録解除する方法は?

Mobile Broadband APIのドキュメントには、次のように書かれています。

次の手順では、通知を登録する方法について説明します。

1. IMbnInterfaceManager > オブジェクトで QueryInterface を呼び出して、IConnectionPointContainer インターフェイスを取得します。
2.返されたインターフェイスで FindConnectionPoint を呼び出し、IID_IMbnPinEvents を riid に渡します。
3. 返された接続ポイントで Advise を呼び出し、IMbnPinEvents を pUnk に実装する > オブジェクト上の IUnknown インターフェイスへのポインターを渡します。

通知は、手順 2 で返された接続ポイントで Unadvise を呼び出すことによって終了できます。

最初の 3 つの手順を実行するコードがいくつかあり、MBN イベントに正常に登録されます。ただし、これらのイベントの受信から一時的に登録を解除する必要があります。
そのため、COM 例外で終了した最初の試行を 2 回行った後、次のコードを試しました (try/catch ブロックを使用)。

このコードを実行すると、MBN からエラーや例外が発生しません。ただし、イベント ハンドラーは登録解除されません。ログ ファイルで、MBN イベントが到着して処理されていることを確認できます。

私が欠けているものを誰か教えてもらえますか?ありがとうございました。

0 投票する
0 に答える
248 参照

c# - null 接続ポイントを返す FindConnectionPoint メソッド

インターフェイスを使用して COM 相互運用イベント処理を行っているときに、私のコードにほぼ似ているこのPOSTを見つけました。 このトピックに関連する情報があれば教えてください。IConnectionPoints

ソースインターフェース(EventInterface)とのCONnectionPointにエラーがあればFindConnectionPoint復帰することがわかっています。NULL

ソース インターフェイスをサポートする COM オブジェクトを QueryInterface メソッド (PS::HRESULT が S_OK を返す) で確認しました。

ここで発生しているエラーの種類は何ですか?
投稿を参照してください。私も同じ問題を抱えてる。 更新: 私の tlh ファイルのスナップショット>>

私のcppファイルのスナップショット>>

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

c# - COM Callable Wrapper を使用して、firebreath PluginAPI.cpp で発生した c# イベントを処理します。

Firebreath の JSCallBack はこの問題に役立ちますか?私が見たのは、firebreath (ネイティブ c++) プロジェクトで発生したイベントのみを処理するためです。私はここにいますか? IConnectionPoint インターフェイスの概念を使用して、イベント シグネチャを含む発信インターフェイスとの接続を確立しました。私のコードはこの投稿によく似ています。

また、クライアントとの COM の接続に関するこの情報も見つけました。ここで質問があります: 私の PluginAPI クラスは、この Outgoing インターフェイスを PluginAPI.h ファイルに実装する必要がありますか? このような、

もしそうなら、それは2つのエラーを引き起こしています

  1. 抽象クラスをインスタンス化できないことを伝えます。make_shared.hpp のこれらの行を教えてください

    template< class T, class A1, class A2 > boost::shared_ptr< T > make_shared( A1 && a1, A2 && a2 ) { boost::shared_ptr< T > pt( static_cast< T* >( 0 ), BOOST_SP_MSD( T ) );

    /li>

2.alignment_of.hppへ

ここ 2 日間立ち往生。また、これに対する回避策。