問題タブ [com-server]
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.
.net - .NET 相互運用で使用する COM サーバーを指定する方法は?
COM サーバーを使用する .NET アプリケーションがあります。COM サーバーは、それを実行するマシンに登録されているため、コードがnew MyInterop.SomeObject()
適切な場所に到達すると、COM サーバーがMyComServer.exe
開始されます。
MyComServer.exe
ただし、デバッグしていると、さまざまな構成ファイルを持つさまざまなフォルダーに存在する のコピーがいくつかあります。どのアプリをロードするかを指定したいと思います。
私が知っている2つの回避策は次のとおりです。
- 使用前に毎回(
MyComServer.exe /regserver
)再登録できます。しかし、ローカルの問題にグローバルなソリューションを使用するのは好きではありません。 - 手動で開始する
MyComServer.exe
と (その後、スタンドアロン アプリとして実行されます)、COM インフラストラクチャはこの既存のプロセスを再利用します。しかし、それはあまり自動化できません。
もっと適切なものはありますか?
matlab - MATLAB相互運用サーバー(自動化サーバー)はランタイムライブラリで利用できますか?
MATLABパッケージ全体(ただしランタイムライブラリのみ)をインストールせずにMATLAB COMサーバー(自動化サーバー)を使用できるかどうかを調べようとしています。
python - PythonCOMサーバーが'module'オブジェクトに属性'VARIANT'をスローしません
Pythonで実装されたCOMサーバーは次のとおりです。
正常に登録されます。実行すると、本番マシンでは次のことが発生しますが、開発ボックスでは発生しません。
comtypes0.6.2をインストールしました。Python2.6.6の実行
com - COMサーバーをWixに登録する
COMサーバーコンポーネントを登録する次のWiXコードがあります
そして、サーバーは正常に登録されますが、プログラムを「実行」モードで実行すると、プログラムはCOMサーバーを認識しませんでした。
アドバイスしてください-WIXコードを変更する方法
更新:答えは-昇格されたアクセス許可でWiXスクリプトを実行するかcomserver.exe /regserver
、昇格されたアクセス許可で実行しますが、機能しません。上記のスクリプトは便利だと思うので、質問はそのままにして、少し違う質問を作成します
mfc - CDialog::Create が ActiveX コントロールを含むダイアログで失敗する
ActiveX コントロールを含むモードレス ダイアログを作成するモジュールがあります。このモジュールは MFC EXE アプリケーションの一部であり、ダイアログの作成は正常に機能しました。最近、モジュールを ATL/COM サーバーに移動し、ダイアログ リソースを EXE から COM サーバーにコピーしました。モードレス ダイアログを使用して作成しようとするとCDialog::Create()
、エラーが発生します。
デバッグして、 which returnsとreturnsCDialog::Create
で失敗することに気付きました。ダイアログ リソースのプロパティで "No Fail Create" フラグを True に変更したところ、エラーの詳細が表示されました。この問題は、マクロ内のダイアログで発生します。これは、次のようにコントロールのリソース ID を使用して を呼び出します。::CreateDialogIndirect()
NULL
GetLastError
0
DoDataExchange()
DDX_Control
CDataExchange::PrepareCtrl()
m_pDlgWnd->GetOleControlSite()
渡されたリソース ID に対する関数の呼び出しは失敗します。ちなみに、リソース ID はコントロールの ID です。
これがEXE内で機能し、COMサーバーで失敗する理由について何か提案はありますか?
delphi - ComClass を見つけました。それを参照するにはどうすればよいですか?
小売アプリケーションへのプラグインとして機能する小さな COM サーバーを Delphi 2010 で作成しました。小売アプリケーションは、それぞれを呼び出す任意の数の追加インターフェイスを登録する「検出」インターフェイスを探しますTAutoObjectFactory.Create
。これは問題なく機能しています。すべてのプラグイン インターフェイスは設計どおりに機能します。
しかし、コードを複製する必要がないように、あるインターフェイスのパブリック メソッドを別のインターフェイスから呼び出したいと考えています。ComClassManager.ForEachFactory
使用する必要があるインターフェイスの ClassID を探して呼び出すだけです。それもうまくいきました!
しかし、クラスを見つけたので、一見些細な最終ステップに困惑しています。実際にそのメソッドの 1 つを呼び出すために見つけたクラス (またはクラス参照?) を使用またはキャストする方法です。
に送信した「FactoryProc」ではForEachFactory
、の ComClass プロパティが求めてTComObjectFactory
いるものであると想定していますが、それは TClass 型であり、それが指す実際のクラス オブジェクトへのクラス参照です (少なくとも、これを正しく理解してください)。私はクラス参照について少し曖昧で、このプロパティをキャストまたは逆参照しようとすると、アクセス違反またはコンパイラ エラーが発生しました。
助言がありますか?
c# - ComVisible 属性と IDispatch インターフェイス
ComVisible 属性と IDispatch インターフェイスの間に関係はありますか? つまり、C# で COM クラス、COMVisible TRUE を作成すると、IDispatch インターフェイスからそのクラスが自動的に実装されるということですか?