問題タブ [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.

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

vb6 - OleView.exe は、VB6 OCX から抽出されたタイプ ライブラリを逆コンパイルできません。

VB6 で作成された複雑な ActiveX コントロールのタイプ ライブラリの IDL ファイルを取得しようとしています。64 ビット Win10 Pro を搭載した開発用 PC で OleView.exe を使用してこれを実行しようとしました。OleView の x64 バージョンは、OCX ファイルまたはそこから抽出された TLB を開こうとすると、単純にクラッシュします。x86 バージョンでは、次のエラー ボックスが 2 回表示されます。

OleView.exe: タイプ ライブラリの読み込みエラー (TYPE_E_CANTLOADLIBRARY)

おそらく、TLB ファイルに複数のimportlibディレクティブが含まれており、OleView が参照ファイルを見つけられない可能性があります。OleView でコンポーネントの OCA ファイルを表示でき、その IDL に相当するファイルの上部に次の行が含まれています。

この問題を OleView で解決するにはどうすればよいですか? または、TLB を IDL に変換する別のツールはありますか?

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

c# - COM オブジェクトとの C# リフレクションの不一致

この数日間、COM オブジェクトの C# リフレクションについて見つけたものをすべて読み、コードで多くの実験を試み、サンプル コードを分析して理解を深めましたが、今では、自分の知識が十分でないことを認めざるを得ません。そのため、コミュニティに助けを求めています。

オブジェクトとしてラップされたレイト バインド COM オブジェクトのプロパティにアクセスして更新できる必要がありますSystem._COM

私はすべての標準的なリフェクションを試してみましたが成功しIDispatchませんでした. 私が必要とすることを行う方法を示している MSDN の論文を見つけましたが、すべての例は C++ で書かれており、私の頭を悩ませています。

次の単純な C# コードが期待どおりに機能しない理由を誰かが説明できれば、非常に役に立ちます。

すでにプロパティを見つけて提供しているオブジェクトが、同じプロパティを更新できると期待するのは不合理ですか? 私が気付いていない「代替更新」戦略はありますか?

助けてくれてありがとう、

ピート。

アップデート:

Jon のリクエストに応えて、OleView のスニペットを以下に示します: (Oleview では切り取りと貼り付けができないため、画像を使用する必要がありました。申し訳ありません...)

COM .DLL の OleView

OLEView typelib ビュー

Jon さん、セッター メソッドに問題があることを正しく認識したと思います。DLL は富士通 COBOL で記述されており、PROPERTY として識別されるフィールドに対して「隠れた」GET および SET を提供します。C# または COBOL から COM コンポーネントにアクセスすると正常に動作しますが、ご覧のとおり、リフレクションを使用して SET にアクセスしようとすると動作しません。私はリフレクションの使用に慣れていないため、構文が正しいかどうか疑問でした。そのため、SET を GET にできるだけ近づけようとしました。独自の SET メソッドを (PROPERTY ごとに) COBOL に生成し、「BindingFlags.SetProperty」を「BindingFlags.InvokeMember」に変更する必要があると思います。(BindingFlags の宿題をしたところ、「SetProperty」を指定すると、言及した他の 2 つのフラグが自動的に暗示されることがわかりました。)

すべての鍵は、問題が富士通 *COM Class SET にあることを認識することにあると思います。経験豊富な目でそれを確認する必要がありました。どうもありがとう。OLEView を確認した後に何かコメントがある場合、またはプロパティ セットを取得するための別の方法を提案できる場合は、非常に興味があります。(私は、すべてのプロパティに対して SETter メソッドを生成する必要があることを楽しみにしていません。それは力ずくの攻撃です... :-))

再度、感謝します、

ピート。