問題タブ [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.
vb6 - OleControlが間違ったタイプにインスタンス化されました-RegFreeCOMで使用する場合のみ?
実行時バインディングを使用してVisualFoxProのフォームに追加するActiveXコントロール(C#を使用して作成)があります。コントロールを登録すると問題なく動作します。
reg free COMを使用して、必要なマニフェストファイルを作成したいと思います。これで、ダブルクリックするか文法的にアクティブ化するまで、ロードされて非アクティブ状態で表示されます。regfreecomマニフェストファイルとは何の関係もないと思います。ただし、遅延バインディング呼び出しを行う前/後に設定するために必要なことはありますAddObject()
か?
それOleTypeAllowed
によって作成されたOleControlのプロパティを確認すると、 (ActiveXオブジェクト)ではなく(埋め込みOLEオブジェクト)になっています。そのため、OleControlは間違ったタイプにインスタンス化されました。AddObject()
1
-2
私も次のことを試しました:
DEFINE
のサブクラスOleControl
とプロパティを設定しますOleTypeAllowed = -2
。コントロールをロードするために遅延バインディングを使用しました。必要に応じて動作しませんでした。OleTypeAllowed
として戻ってきた1
ActiveXコントロールを登録しました。ビジュアルエディターを使用して、ActiveXコントロールをサブクラスとしてプロジェクトに追加しました。コントロールの登録を解除しました。コントロールをロードするために遅延バインディングを使用しました。必要に応じて動作しませんでした。
OleTypeAllowed
として戻ってきました1
。
OleControlをActiveXコントロールとしてロードすることは可能ですか?
FoxProに変換できるVBからの入力もいただければ幸いです。
vb6 - 登録不要の COM/.NET 相互運用機能を使用した .NET アセンブリの調査
COM Interop を介して VB6 実行可能ファイルで使用されるアセンブリが 1 つあります。このアセンブリは、他の .NET アセンブリを使用します (COM では使用できません)。VB6 アプリケーションの .manifest を定義したので、登録せずに .NET アセンブリを使用できます。また、サブディレクトリ ("bin") でアセンブリを検索するために、プローブ設定を使用して VB6 アプリケーションの .config を定義しました。
指定したサブディレクトリ ("bin") にすべての .NET アセンブリを配置すると、アプリケーションが正常に起動し、Interop-Assembly が他のアセンブリのコードを呼び出すまでアプリケーションを操作できます。その後、実行時エラー '429' が発生します: ActiveX コンポーネントはオブジェクトを作成できません。
.config ファイルをドロップしてすべてのファイルを同じディレクトリに配置すると、アプリケーションは期待どおりに動作します。
VB6 実行可能ファイルで使用される .NET アセンブリにプローブを使用することはできますか? 他のアセンブリが正常に配置されるように、正確にプローブをセットアップする方法はありますか?
.config
com - EXE(アウトプロセス)COMサーバーで登録なしのアクティベーションは可能ですか?
CoLoadLibraryとDllGetClassObjectを使用して、DLLを登録せずにIClassFactoryインターフェイスを取得し、COMコンポーネントインターフェイスを取得できることを知っています。
しかし、EXEのCOMコンポーネントはどうでしょうか。別のファイルパスを指定するだけで、EXEタイプのCOMサーバーからCOMコンポーネントインターフェイスを取得する方法はありますか?
com - 登録不要 COM: VB6 DLL を参照する VB6 Executable
したがって、複数の VB6 COM DLL を参照する 1 つの VB6 実行可能ファイルがあります。オンザフライで、実行可能ファイルのマニフェストと、参照されている各 DLL のマニフェストを生成することはできますか? もしそうなら、どうやって?
プロセスの一部として COM DLL を登録せずに、ビルド プロセスの一部としてこの操作を実行したいと考えています。
注: これまでに見つけた reg-free COM の例はすべて .NET 相互運用に関係していますが、これは私が行っていることの要件ではありません。
[編集]
Unattended Make My Manifest を使用していくつかの予備テストを行った結果、思ったほどユーザー フレンドリーではないことがわかりました。また、ドキュメンテーション用の Sample.ini ファイルしかないため、そのファイルに入れる必要のないものと比較して、そのファイルに入れる必要があるものを理解するのにかなり苦労しました。とにかく、私は独自のツールを使用してマニフェストを作成することにしました。願わくば、雇用主からコードをオープンソースとしてリリースする許可を得られることを願っています。
*今のところ、あなたが私と同じ立場にあり、サイドバイサイド/登録不要の COM 相互作用を使用するビルドおよび運用環境を作成したい場合は、それが可能であることを知っておいてください. 最初は単純な DLL とコンシューマー アプリを使用して手動で作成し、特定のニーズに合うまで徐々に構築することをお勧めします。**
visual-studio-2008 - 分離モード(登録不要) VC++ 2008でのCOM設定
VC++ 2008 プロジェクトで分離モード (登録不要) COM DLL への参照を作成するにはどうすればよいですか?
Isolated
C# プロジェクトでは、参照のプロパティを切り替えるのと同じくらい簡単です。VC++ プロジェクトで同等のことを行うにはどうすればよいですか?
dll - マニフェスト ファイルを使用して、VB6 アプリの .EXE に特定のバージョンの OCX にアクセスするように指示できますか?
やなど.EXE
の Microsoft 作成を使用する VB6 アプリがあります。これらの両方で問題が発生します。本質的に、これは DLL-Hell 問題です。OCXs
RICHTX32.OCX
MSACAL70.OCX
OCXs
.manifest
にファイルを使用する場合.EXE
、.EXE にアプリケーション ディレクトリ内のこれらの特定のコピーにアクセスするように指示して、OCXs
これらの登録に関する問題を回避できますOCXs
か?
.net - Reg-Free COMはInteropで動作しますか?
ここでのコンセンサスは何ですか?
.NETアセンブリを利用するためにInteropを使用するVB6アプリがあります。Reg-Free COMを使用して.NETアセンブリを「登録」できますか?
com - 登録不要のアクティベーション用の COM コンポーネント
アンマネージド アセンブリ (unmanaged.dll という名前) を使用するマネージド アプリケーション (managed.exe という名前) があります。これまで、Interop.unmanaged.dll を作成し、managed.exe アプリケーションが相互運用機能を参照し、unmanaged.dll がレジストリに登録されていました。これはうまくいきました。
ここで、レジストリ内のファイルを回避し、プライベート アセンブリを使用するオプションが必要です (レジストリに古いバージョンがまだ登録されている場合でも)。
この記事を見つけました -登録不要のアクティブ化のための COM コンポーネントの構成。2 つのマニフェスト (アプリケーションとアセンブリの両方) を作成しようとし、それらをリソースとして配置しようとしましたが、何も機能しませんでした。
その方法をステップバイステップで説明してもらえますか?マニフェストの例を含めますか? 以前と同じように相互運用ファイルを使用する必要がありますか?
ヒントをいただければ幸いです...
c# - Windows7上のVB6でのRegFreeCom
VB6コードから使用する.NETコードがいくつかあります。私は常に、依存する.NETアセンブリをリストしたVB6.exe.manifestファイルを作成することにより、XPマシンでこれを開発してきました。
たとえば、私の2つの.NETアセンブリがSome.Assembly.A.dllとSome.Assembly.B.dllであるとすると、VB6.EXE.manifestは次のようになります(以下のバージョン=1.1.0.0を使用します。これがバージョンです。 AssemblyInfo.csで.NETAssemblyVersionを設定しました):
次に、同じディレクトリ内のDLLとともに、アセンブリと独自のマニフェストファイルがあります。「Some.Assembly.A.dll.manifest」の例を次に示します。
また、参照されているDLLを実行tlbexp
してTLBファイルを作成します。これは、VB6プロジェクトファイルで参照しているものです。
Windows 764BITマシンに移行したい。同じ方法を使用して、WIN7マシンで.NETオブジェクトをインスタンス化するVB6コードをヒットすると、次のようになります。
ActiveXコンポーネントはオブジェクトを作成できません。」
XPでは成功します。VB6.EXE.manifestの依存アセンブリのスペルを意図的に間違えた場合-XPでは
「アプリケーションの構成が正しくないため、このアプリケーションを起動できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります。」
WIN7では、VB6がロードされるだけです。WIN7のマニフェストを無視するようなものなので、WIN7のREGFREEメソッドを使用して.NETオブジェクトをロードすることはできません。regasm
DLLの場合、すべてが機能します。
VB6をWIN7(64ビット)のreg free comで動作させる方法についてのアイデアはありますか?
c# - 複数のプロジェクト用に分離 COM を設定する
私のソリューションは複数のプロジェクトで構成されており、出力タイプが Windows アプリケーションであるプロジェクトを除いて、そのすべてがタイプ クラス ライブラリです。アプリケーションは他のすべてのプロジェクトを参照します。また、いくつかのプロジェクトとアプリケーションによって参照される COM コンポーネントもあります。
Visual Studio で参照されている COM コンポーネントの Isolated プロパティを TRUE に変更することで、regfree COM をセットアップできます。ソリューションが正常にビルドされ、特定のアセンブリまたはアプリケーション用に生成されたマニフェスト ファイルを確認できます。
さて、私の質問は、COM コンポーネントを参照するすべてのプロジェクトに対してこれを行う必要があるかということです。はいの場合、Isolated プロパティを複数のプロジェクトで TRUE に設定できない (ビルド エラーが発生する) ことがわかっているので、これを回避するにはどうすればよいですか?
私は.netに比較的慣れておらず、regfree COMについてあまり知りません(私がしていることはregfree COMであると思いますか?)。この問題について私が得ることができるどんな助けも大歓迎です。ありがとう。
現在、VS 2008 を使用しています。
編集: 複数のプロジェクトで Isolated プロパティが TRUE に設定されている場合、ビルド エラーは、両方のプロジェクトの生成されたマニフェストで myCOMcomponent.ocx が定義されていることを示します。