問題タブ [oleview]
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.
c++ - COM インターフェイス メソッド C++ にアクセスする
両方:
- CLSID
- IID
上記を指定し、以下を使用します。
- CoCreateInstance()
上記の CLSID で指定されたクラスの単一の初期化されていないオブジェクトを返します。
C++ からインターフェイスのメソッドにアクセスするにはどうすればよいですか? それなし:
- ATL
- MFC
- ただのC++
その後、 CreateInstance() を使用します
CreateInstance() を使用して問題が発生しました - 最後のパラメータ - ppv
oleview を使用すると、上記の IID の上に指定された IID のメソッドを次のように表示できます。
上記にアクセスするにはどうすればよいですか?例/ガイダンス - お願いします
よろしく
dll - Oleviewエラー「タイプライブラリの読み込みエラー」?
タイプライブラリは、アプリケーションまたはダイナミックリンクライブラリ(DLL)によって公開されるクラス、インターフェイス、定数、およびプロシージャを宣言します。タイプライブラリは通常、プログラムファイル内のリソースです。拡張子が.tlbまたは.olbのスタンドアロンバイナリファイルにすることもできます。
したがって、一部のDLLは、TypeLibとして宣言されていなくてもインターフェイスを公開する可能性があります。
実際、oleviewからdllを開こうとすると、「エラー読み込みタイプライブラリ」というエラーメッセージが表示されます。
私の理解によると、DLLから公開されているインターフェイスがある場合は、oleviewで開く必要があります。そうでない場合は、公開されているインターフェイスや関数を使用できません。
インターフェイスを公開しているdllがあり、それでもOleviewで表示できない可能性。
.net - C#列挙型をCOM相互運用機能の呼び出し元に公開することは可能ですか?公開する場合は、どのように公開しますか?
COM相互運用機能を介して呼び出されるマネージドアセンブリがあります。VBScriptクライアント、Perlクライアントなどのように。
クラスはで飾られています
それからもちろん私はレガスムのことをします、そしてすべての方法はうまく働きます。
ただし、アセンブリには列挙型もあります。列挙値には、シンボリック名のCOMアプリケーションを使用したいと思います。
COM相互運用機能を介して列挙型を公開するにはどうすればよいですか?これらの属性を追加する必要がありますか?
次に、VBScriptでこれらのシンボリック名を参照するにはどうすればよいですか?OleViewに列挙型が表示されません。(私がすべきですか?)OleViewに他のすべてのタイプが表示されます。
java - COM4jで使用するDirectShowインターフェイスのtypelib識別子を見つけるにはどうすればよいですか?
COM4jを使用して、Windows上のJavaから(FMJまたはJMFフレームワークを経由せずに)Webカメラと対話しようとしています。ただし、インターフェイスを構築するためのDirectShowのtypelib識別子が見つかりません。COM4jサイトでは、OleViewを使用してtypelibを見つけることを推奨していますが、そこでtypelibのリストを調べたところ、DirectShowインターフェイスを提供しているように見えるものを見つけることができませんでした。
windows - COM オブジェクトを探索/テストするためのツールはありますか?
Python (win32com) の COM オブジェクトを使用してプロセスを自動化しようとしていますが、期待した結果が得られません... 特定のプログラムを作成せずに COM オブジェクトを探索/テストするツールはありますか? つまり、たとえば COM オブジェクトをインスタンス化してそのメソッドを呼び出すことができるものはありますか?
(基本的に、予期しない結果が win32com のせいであるかどうかを調べようとしており、Visual Studio をインストールして C# アプリを作成することは避けたいと考えています)
.net - REGASM /u を使用して COM [PrimaryInteropAssemblyName] typelib 値を削除できません
誰かが私を正しい方向に向けてくれることを願っていました。問題を明確にするために、いくつかの手順で問題をリストしました。
- regsvr32を使用して C++ DLL を COM に登録します。
- 次に、C++ DLL の/primary属性を指定してtlbimpを使用して、C# で使用できるアセンブリ ファイルを作成します。
- 次に、新しく生成されたアセンブリを GAC に登録します。
- C++ タイプ ライブラリに GACed アセンブリへの参照が含まれるように、生成されたアセンブリで regasm を呼び出します。
問題は、regasm /uを使用すると、「正常に登録解除されました」と表示されることです。しかし、OLEVIEW を使用して COM で typelib をチェックすると、GACed アセンブリへの PrimaryInterop 参照がまだ表示されます。
regasm /u /tlb も使用してみましたが、次のような警告が表示されます。
これは私を夢中にさせているので、助けてくれてありがとう;)
regsvr32 - iviewersのdllregisterserverが失敗しました
Oleviewを実行しようとすると、IViewer.dllのDllRegisterServerが失敗したというエラーが表示されます(スクリーンショットを投稿したかったのですが、10レピュテーション= pになるまで投稿できません)
Oleviewは実行されますが、msgが言うように、私がやりたいこととまったく同じインターフェースを見ることができません。
私は自分のiviewer.dllを見つけ、その上でzippy32を問題なく実行しました。だから私は何が起こっているのかわかりません。
c# - インターフェイスなしでCOMイベントをレイトバインドする方法
3.5 C# アプリケーションでサード パーティの VB6 COM オブジェクトにレイト バインドする必要があります (現在のバージョンの依存関係を避けるため)。提供された dll は、通常どおり使用しようとするとエラーが発生するバグがあるため、ほとんどの非遅延バインド方法では使用できません。現在、非常にバージョン固有のカスタム VB6 ラッパーを使用していますが、遅延バインディングを使用してプロパティとメソッドにアクセスできることがわかりました。現在、イベントに遅延バインドしようとしていますが、必要なイベント シンクを作成するには、COM ラッパーのインターフェイスから継承する必要があると書かれています。ここにそのような記事があります。
それで、私の質問は、コンパイル時に dll を参照せずに遅延バインド イベント処理を実行できるかどうかです。
アップデート
VB6ラッパーで発生したエラーは次のとおりです(これはまだ積極的に更新されています)。
- OleViewer では、
選択したアイテムを逆コンパイルできませんでした。タイプ ライブラリ/DLL のロード中にエラーが発生しました。TYPE_E_CANTLOADLIBRARY ($80029C4A)
- Visual Studio では次のようになります。
COM 参照 "3rdPartyDLL" の依存関係を特定できませんでした。タイプ ライブラリ/DLL のロード中にエラーが発生しました。(HRESULT からの例外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))
.net - TLB を IDL に変換する
タイプ ライブラリ (.tlb) から idl ファイルを生成するコマンドライン ツールを知っている人はいますか? これを行う理由は、regasm から生成された列挙値のアンダースコアを取り除くためです。列挙型のアンダースコアの問題は、このブログで説明されています
http://blogs.artinsoft.net/mrojas/archive/2010/05/17/interop-remove-prefix-from-c-enums-for-com.aspx
OLEView が IDL ファイルを生成できることは知っていますが、自動ビルドに適合するソリューションを探しています。