問題タブ [regfreecom]

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 に答える
505 参照

asp-classic - ASP Classic は登録不要のコンポーネントを使用できますか?

トピックにあるように、ASP Classic は登録不要のコンポーネントを使用できますか? これは Windows Server 2003 上にあります。

そうでない場合、誰かがいくつかの代替案を提供してもらえますか?

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

com - tlb ファイルなしでアウトプロセス COM サーバーを使用する方法

Window COM コンポーネントについてです。

  • Server.exe: 32 ビットのアウトプロセス COM サーバー
  • CLSID_Application: Server.exe 内の COM オブジェクトの GUID
  • Client.exe: レジストリを使用しない方法で Server.exe を使用する 64 ビット クライアント アプリケーション。

私たちが知っているように、exe はレジストリを使用しない COM コンポーネントとして使用することはできません。そのような動作を模倣するために、正確なパスを指定して Server.exe プロセスを自分で開始します。

  • CreateProcess("Server.exe")
  • IClassFactory* pFactory = CoGetClassObject(CLSID_Application)
  • pFactory->CreateInstance(ppAppObject);

Server.tlb を登録していれば機能しますが、Server.tlb を登録解除した後、Server.exe と Client.exe の両方にマニフェストを埋め込んでも、ppAppObject の作成に失敗しました。

これについて何か考えはありますか?

編集:インターフェースにtlbidを指定し、マニフェストを両方のexeに埋め込むと、実際に機能することがわかりました

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

.net - .NETアプリを使用したマルチプラットフォーム登録不要のCOM

COMコンポーネントを使用する.NETアプリケーションがあります。アプリケーション自体は「任意のCPU」ですが、COMコンポーネントには32ビットと64ビットのバージョンがあります。

記事http://msdn.microsoft.com/en-us/magazine/cc188708.aspxは、登録なしのCOMをどうするかについて明確に説明しています。しかし、何をすべきか:

  • 「任意のCPU」アプリ
  • 依存アセンブリ:
  • Assembly1はCOMコンポーネント「Foo」を使用します。fooには同じファイル名の32ビットバージョンと64ビットバージョンがあります(Fooは作成していません。サードパーティによって作成されました)。

動作する1つの方法は、32ビットリリース用と64ビットリリース用に別々のアプリマニフェストを作成することです。このようにして、各マニフェストファイルにCOMコンポーネントの正しいサイズとハッシュを含めることができます。ただし、これは避けたいと思います。

どういうわけか、これをVisual Studioで面倒なく設定することは可能ですか?アプリケーションが両方のプラットフォームをシームレスに実行する単一のフォルダー(COMコンポーネント用のx64、x86サブフォルダー)を持つことは可能ですか?

正しい方向へのポインタは大歓迎です!単純なスイッチを見落としているか、どこかに設定しているだけです。

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

c# - 分離 (Reg Free) COM コンポーネントの動作

私はかなり厄介な状況にあります。

私は(COMを介して)マネージC#アセンブリから使用する(Delphi)win32 dllである1つの小さなCOM公開コンポーネント(SmallCOMと呼びましょう)を持っています。

(Delphi)win32 dllであり、同じマネージc#アセンブリから(COMを介して)使用する1つの大きなCOM公開コンポーネント(BigCOMと呼びましょう)があります。

そして「面白い」部分は、BigCOM もインスタンス化して、COM を介して SmallCOM を使用することです。

これはすべて同じプロセスで発生し、何らかの理由で、(windgb を使用して分析した場合) 次のことを教えてくれる、キャッチできない低レベルの例外が発生することがあります。

BigCOM は SmallCOM との連携を完了し、それを解放したため、C# exe から再び使用することはできなくなったと思います (そして、再読み込みは論外です。exe は高度にマルチスレッド化されたサービスであり、この SmallCOM を使用します)。 BigCOM が動作している場合でも)。

だから、私の質問は次のとおりです。Isolated Reg-Free COM を使用して、C# exe で SmallCOM を分離すると問題が解決しますか? それとも、同じプロセスを共有している BigCOM と C# exe は、何があっても同じ SmallCOM.dll を使用しますか?

前もって感謝します!エティエンヌ。

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

.net - SxS を使用し、マニフェスト ファイルが使用されている場合、.net 呼び出し COM は他の .net COM オブジェクトを呼び出しますか?

COM コンポーネント (C++) を呼び出す .net アプリケーションがあり、.NET で実装された別の COM オブジェクトを呼び出します。

このアプリケーションは Windows SxS 機能を使用しており、COM コンポーネントを登録していません。C++ で書かれたものでも、.net で書かれたものでもありません。

C++ COM コンポーネントへのこの最初の呼び出しは正常に機能します。しかし、C++ COM コンポーネントが .net コンポーネントを呼び出すと、クラスが登録されていないため失敗します。

.net コンポーネントを呼び出すマニフェスト ファイルを使用して小さな C++ アプリを作成しようとしましたが、動作します。流れが.net→COM NATIVE→.NET COMのとき​​のようです。するとSxSが壊れて動かなくなります。

Fusion ログ (アセンブリの読み込みログ) を見ると、誰も .NET COM アセンブリを解決しようとしていないことがわかります。

この SxS シナリオは動作するはずですか (動作するはずだと思います)? はいの場合、何が間違っているのでしょうか?

これらは私が使用しているマニフェスト ファイルです。

.net アプリケーションのアプリ マニフェスト (リソースとして埋め込まれています):

application.sxs.manifest (通常のファイル):

PerformanceMonitor マニフェスト (XP の .net com バグを回避するために、PerformanceMonitor.dll にリソースとして埋め込まれています):

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

.net - VB IDE (VB6 & VBA) から RegFree COM および .NET を呼び出せないのはなぜですか?

コンパイルされた VB6 から呼び出されたときに機能するサンプル プロジェクトがありますが、IDE や Excel の VBE からではありません。

QA.DLL、QB.DLL、QAW.DLL の 3 つの DLL があります。QA は C#.NET で記述され、QB と QAW は VB6 で記述されています。QAW は QA の COM ラッパーです。

呼び出しコードで、アクティベーション コンテキストを作成し、マニフェスト ファイルを読み込みます。

VB6で作成されたexeからはすべて正常に動作しますが、VB6またはExcelのVBAのデバッグモードでは機能しません。

IDE 呼び出しの違いと、それが機能しない理由について何か考えはありますか?

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

visual-studio-2010 - マニフェストファイルの手動編集を回避する方法

私のVB.Netアプリケーションは、別のactiveX(内部)に依存する分離されたactiveX(外部)を使用しており、どちらもregistration-free-comを使用しています。

生成されたマニフェストファイルには、外部ActiveXの情報のみが含まれています。(おそらく、vsは外部のActiveXが内部のActiveXを使用していることを知ることができないためです)

プロジェクトを再構築するときは、常に内部ActiveXの情報をマニフェストファイルに手動で追加する必要があります。そうしないと、アプリケーションは内部ではなく外部のみを表示します。

Visual Studio(2010)に、ビルドごとにマニフェストファイルを再生成したくないことを通知する方法はありますか?

ありがとう、

アタラ

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

c# - Reg-Free-COMを使用しているときに、WPFベースのActiveXコントロール(COM相互運用機能)に送信されないイベント

WPFベースのActiveXコントロール(COM相互運用機能)があります。コントロールを登録することで正しく使用できます。(マニフェストファイルを使用して)Reg-Free-COMを実行しようとすると、コントロールがアクティブ化されているように見えますが、イベント(マウスクリック、RequestBringIntoViewなど)が応答しません。興味深いことに、ダブルクリックとタブキーが機能します。

私はこの記事で読んだhtt​​p: //blogs.msdn.com/karstenj/archive/2006/10/09/activex-wpf-gadget.aspx「...これらの利点には代償が伴います:ActiveXコントロールはレジストリに登録されているため、.msiなどの何らかのインストールが必要です。デフォルトのガジェットインストールプロセスではActiveXをインストールできません。ActiveXコントロールにreg-freeCOM経由でアクセスすることはできません。...」

誰かが同じような経験をしたことがありますか?誰かが何が起こっているのか説明できますか?

追加の詳細:
コントロールが登録された後にアクティブ化されると、COMクライアントのUIの一部として表示されます。コントロールはフォーカスを受け取りません、その要素はそれを受け取ります。

reg-free-comを使用すると、コントロールが正しくロードされません。1)コントロールは、サブ要素の代わりにフォーカスを受け取ります2)コントロールには、ウィンドウのデフォルトの色の代わりに黒の領域があります3)コントロールをタブインおよびタブアウトするか、ダブルクリックすると、サブ要素がフォーカスを受け取り、コントロールが開始しますイベントを受信すると、黒い領域が正しい色に置き換えられます

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

c# - 登録不要の com を使用して (COM 相互運用ベースの) ActiveX コントロールを有効にします。

登録不要の com で使用しようとしている (COM Interop ベースの) ActiveX コントロールがあります。コントロールが読み込まれると、コントロールは非アクティブになります (イベントに応答しない、コントロールが完全にレンダリングされないなど)。

多くの検索の結果、reg-free-com を使用する COM オブジェクトが miscStatus 属性を使用して初期状態を設定し、正しくアクティブ化されることがわかりました。ネイティブ COM オブジェクトに対応する comClass で使用する方法を知っています。

1) COM 相互運用オブジェクトに対応する clrClass 要素の次のものと同等のものは何ですか?

2) 私が使用している COM クライアントは Visual FoxPro です。(1) が不可能な場合、非アクティブな ActiveX コントロールをアクティブにするために VFP で何ができるでしょうか。(同等の foxpro を見つけるために使用できるのであれば、VB または C# の入力も気にしません)

現在、私は次のことを試しました

しかし、マウス クリックなどのイベントをそのサブ要素に渡す前に、OleControl1 がフォーカスを取得します。そのため、フォーカスがない場合は常に、必要なアクションを実行するために 2 回クリックする必要があります。miscStatus 値の「nouiactivate」が設定されているかのようにコントロールを動作させたいと思います。

3) 私がやりたいことを達成する他の方法はありますか?

Hans Passant さん、これが現在の Assembly.dll.manifest のリストです。コメントの書式設定により、読めなくなりました。

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

.net - Native.* assemblyIdentity with Registration-free com

登録なしで使用する必要がある COM ライブラリに Isolated=true を設定しました。Visual Studio で、各アセンブリの Native.* マニフェスト ファイルが作成されました。

  1. なぜ「ネイティブ」?これを変更できますか?誰かが私が読める情報を教えてくれますか? (ネイティブ/アセンブリ/マニフェストをグーグルで検索すると、関連のない情報がたくさん得られます)
  2. これらのマニフェスト ファイルをアセンブリ DLL に埋め込む方法はありますか?

ありがとう!