問題タブ [com]

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

com - COMオブジェクトを作成しようとすると「オブジェクト変数またはWithブロック変数が設定されていません」

次のコード行を使用して COM オブジェクトを作成しようとしている VB6 dll があります。

ただし、これは「オブジェクト変数またはブロック変数が設定されていません」というエラーで失敗します。

dcomcnfg で OPSValuer.OPSValue を確認でき、問題なく登録されているようです。問題の原因について何か考えがある人はいますか?

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

com - InstallShield: Darwin 記述子

インストーラーで COM 情報を更新したにもかかわらず、InstallShield インストーラーがいくつかの COM DLL を正しく登録していないようです。インストール後に regsvr32 を手動で実行すると、すべて問題ありません。

インストール後、ランダムに見える文字列を含むコンポーネントのレジストリに InprocServer32 値があることに気付きました。これは、Darwin 記述子であると考えられます。存在する場合、クリアテキスト パスの場所を上書きすることを理解しています。regsvr32 を手動で実行すると、これらの Darwin 記述子が消えます。私の現在の仮説では、これらの記述子にエンコードされた情報が正しくないため、プログラムが COM コンポーネントをインスタンス化しようとすると、DLL へのクリアテキスト パスが正しい場合でも、正しくない Darwin 記述子情報を使用して失敗します。

これが事実であるかどうかを確認する方法、これらの記述子をデコードする方法、InstallShield が Darwin Descriptor を生成するのを停止する方法、またはインストーラーを修正する方法について、誰かが光を当てることはできますか?

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

windows - Windows での COM 登録のしくみ

私はアプリケーション パッケージャーであり、COM レジストリ キー (SelfReg) が Windows の特定の .dll とどのように相互関係しているかを理解しようとしています。

ProgID、AppID、TypeLib、拡張機能、動詞はすべて CLSID に関連付けられていますか? CLSID は常に Prog/App ID を使用しますか?それともファイル拡張子クラスだけを使用できますか? オプションのビットはどれですか?

その一部は、2 つのインターフェイス (内部 - .dll) と外部 (拡張子など) がある「ルーターのようなもの」のようです。

これはどのように適合しますか?(SDKのドキュメントは私には意味がありません)

これはすべて、Windows インストーラーを使用したアプリケーションの「修復」にとって極めて重要であるため、質問します (パッケージャーはすべて「大きく」なっていますが、実際にはコーダーのものであるため、本質的な故障はありません)。

---編集: COM が登録されているものはすべて CLSID にリンクする必要があり、「行き止まり」になることはないと想定しても安全ですか? 動詞には、progid を必要とする拡張機能が必要です...

AppId、TypeLib、インターフェイスはどうですか? それらはどのように相互に関係していますか?

0 投票する
4 に答える
2781 参照

c# - MS Excel および COM によってホストされる C# 2 のデリゲート内の例外の動作

みなさん、おはよう、

ここで少し言語理論の質問があります... C# の例外処理とデリゲートが場合によっては異なる動作をすることを示唆する参考文献をオンラインで見つけましたが、この問題に関する具体的なドキュメントは見つかりません。

最近、Microsoft Excel アドインのデリゲート内で例外が発生し、MSVC ランタイムでハード クラッシュが発生するという大きな問題が発生しました。デリゲートを削除することでこれは解決しましたが、私は今、悲惨な詳細を知りたいと思っています.

コアコードの簡潔な例として:

上記の構成により、集中型のエラー処理が可能になり、純粋なコードの観点からは、クリーンで簡潔になりました。公開されている各関数はデリゲートとして宣言され、上記のフラグメントを介して実行されます。

単純なコンソール アプリでは、デリゲートから例外をスローするか、単純な予期しないエラー (たとえば、null ポインターで ToString() を "誤って" 呼び出す) をスローすると、期待どおりに機能し、エラーは必要に応じて処理されます。

MS Excel を投入すると、ハード クラッシュが発生します。コードをステップ実行すると、エラーが発生した場所が示されますが、すべてが破壊の大きな火の玉になる前に、スタックの巻き戻しが行われていないように見えます。

私の仮説は、.NET ランタイム (つまり、コード) をホストしている COM が、通常の .NET コードの実行とは異なることを行っているというものです。これによりエンドポイントが強制終了され、Excel はこれを認識せず、COM を介してエンドポイントにアクセスしようとしますが、エンドポイントが何らかの形で消失したことを確認し、Excel が代わりにクラップアウトします。

これは、Excel + COM + デリゲートの組み合わせでのみ発生しますが、この動作でどちらがより影響力があるかは正直わかりません... 何か考えはありますか?

0 投票する
5 に答える
5512 参照

delphi - Delphi を使用して Outlook プラグインを作成する方法

データベース プロジェクトに取り組んでおり、現在プレビューされているメッセージをデータベースに保存する Outlook 2007 プラグインを作成する必要があります。

Delphi で Outlook プラグインを作成する方法と、それを展開する方法について、順を追って説明してくれる人はいますか?

ありがとう

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

.net - シングルトンの静的インスタンスを作成するこれらの方法の違いは何ですか?

最近、ライブラリがデバッグ ビルドではなくリリース ビルドとしてビルドされた場合にのみ現れるバグがありました。ライブラリは、COM ラッパーを使用した .NET dll であり、CoCreateInstance を使用して、アンマネージ C++ アプリで dll からクラスを作成しています。最終的にバグを追跡したところ、シングルトン オブジェクトへのアクセスが原因でした。シングルトン インスタンスを次のように宣言しました。

次に、次の方法でアクセスしました。

これは失敗していました。次のように変更します。

問題を修正しました。最初の使用法が機能しなかった理由と、どちらの方法でも欠点があるかどうかについてのアイデアはありますか?

リリース dll は、別のマネージド アプリから完全に使用できるようでした。

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

vb.net - COM クラス ファクトリ エラー

マシンをサーバーとして使用してアプリケーションをテストしており、すべて問題なく動作していますが、テスト サーバーで実行するようにセットアップしようとすると、次のエラーが発生します。

次のエラーのため、CLSID {XXXX} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80040154。

何か案は?

ありがとう

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

c++ - COM SDK リファレンス ドキュメントはどの構文で記述すべきですか?

C++ で記述された COM SDK があり、製品のドキュメントを作成したいと考えています。ほとんどの人はおそらくこの COM コンポーネントとの統合に C++ を使用しないでしょうが、多くの人はそうするでしょう。

C++ 開発者が知る必要のある詳細を失うことなく、API を記述するのに最適な方法はどれですか。

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

c# - .NET COM 相互運用メソッドの署名

次の COM メソッドにどの相互運用署名を使用しますか? 特に最後の 2 つのパラメーターと、a を使用するかどうかに関心がありMarshalAsますSizeParamIndex

ドキュメントの状態:

pValue [out] 値を含むバイト バッファーへのポインター。NULL を渡して、必要なバッファーの長さを取得します。

pcbLength [in, out] 入力では、pValue の長さを含む変数へのポインター。出力では、変数には使用された pValue のバイト数が含まれます。

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

php - 引数としてOLE_COLORを使用してPHPからCOM関数を呼​​び出す方法は?

COM 相互運用拡張機能を使用して、PHP から COM オブジェクトを呼び出そうとしています。1 つの関数は、引数として OLE_COLOR を必要としますか? この種の値を PHP から渡す方法はありますか?

単純な整数値を渡そうとしましたが、成功しませんでした。