質問

最初にocxをregsrv32に登録せずに、winformでocx(ActiveX Control)を使用(おそらくプログラムで追加)することは可能ですか?

私が達成しようとしているのは、xcopyインストールを有効にすることです。 " AxInterop。 .dll"がありました。および" Interop。 .dll"開発マシンから生成されたファイル。

最初に登録せずにCOM dllを呼び出す可能性を見てきました( ProSysLib 、著者によると、まだテストしていない)、ocxもCOMベースであるため、それを行う方法もあるに違いありません。

役に立ちましたか?

解決

はい、これは可能です。アプリケーションはWindows XP(またはWindows Server 2003)以降にのみデプロイされると想定する必要があります。その後、「登録不要のCOM」と呼ばれるものを使用してこれを実現できます。

基本的には、ActiveXコントロールDLLのマニフェストファイルを作成して、Windowsローダー& COM DLLは、レジストリに登録することなく、その登録が何であるかを知っています。

MSDNのこの記事には、何をすべきかのチュートリアルがあります。 COMコンポーネントの登録不要のアクティベーション:チュートリアル

"ステップ6"および「ステップ7」その記事には、必要となるすべてが含まれています。

Microsoft ActiveXグリッドコントロール(古い「MS Flexグリッド」)を使用する自分のC#プログラムの1つでこれを試したところ、正常に動作します。アプリケーションとCOM DLLの両方のマニフェストファイルを作成し、適切な場所で適切なGUIDを置き換えてください。 OLEVIEWを使用して、ActiveX DLLから使用する適切なIDを探し出す必要がある場合があります。

他のヒント

.NETで作成されたCOMコンポーネントにレジストリフリーのCOMを使用すると、Windows XPでランダムにクラッシュする可能性があることに注意してください!

リンク: Stackoverflowに関する質問これを知ったのは、Microsoft Knowledgebase 記事がその質問で言及したことです。修正プログラムはありますが、再配布することはできません。

Visual Studioではさらに簡単です。参照に移動し、ocxで作成された位置(2、AxSomethingおよびSomethingが必要です)を見つけ、両方のプロパティにIso:trueを設定します。マニフェストもコードもありません。 ocxを含むdllファイルでexeを配布する必要があります。開発マシンで、ocxを登録できます。

Win7でOCXを使用してVB6アプリを実行する方法と管理者権限を登録せずに10時間検索した後、ここでクリックソリューションがほとんど見つかりませんでした: http://mmm4vb6.atom5.com/yes-update-0-12-5479.html#c

「マニフェストの埋め込み」をチェックして、機能させる必要があります。チャームとして機能します!

この質問もここで見つけたので、ここで解決策を投稿します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top