私は、エージングOCXコントロールの使用に依存する.NETアプリケーションの開発中です。このコントロールは、航空会社の予約システムへのユーザーの対話を可能にする端末インターフェースを提供します。すでにいくつかのVB6アプリケーションで「成功」していますが、今後は.NETアプリケーションで使用する必要があります。エージング32ビットOCXコントロールが.NETで読み込めません。
.NET 4とVisual Studio 2010を使用しているWindows XP(x86)ボックスでは、正しく登録されたコントロールを使用するWinformsとWPFアプリケーションの両方を作成しました。私はReg Free COMを実装しており、XCOPYとClick-Onceの両方を使用することで、両方のプロジェクトをWindows XP(x86)マシンに正しくデプロイすることができ、両方を期待通りに動作させることができます。残念ながら、Vista(x86)とWindows 7(x64)のデプロイメントでは、アプリケーションは起動しますが、コントロールはレンダリングされません。
問題を理解するために、Windows 7(x64)開発環境にコントロールを登録しようとしました。私は両方を試してみました:
- はます。regsvr32(x86のレジストリ)のSYSWOW64バージョンを使用してSYSWOW64ディレクトリに置か制御登録正常ます。regsvr32(x64のレジストリ)
- を使用してコントロールを登録
でどちらの場合でもコントロールが正常に登録されたように見え、新しいWinformsプロジェクトではコントロールをツールボックスに追加できます(アイコンが表示されます)。しかし、フォームにコントロールをドラッグするとすぐに、XPのようにターミナルウィンドウではなく、フォームの角に小さなボックスとして表示されますが、XPと同じ方法でInteropファイルが生成されますか?
私は解決策のいずれかの種類のためのネットをトロール年齢を費やしているを選択したときにWindows 7に見られるように、XP
に見られるよう
コントロール制御や同様の問題は役に立たない。どんな提案も歓迎!
アップデート1:
@DanielHilgarthによって示唆されるように、私はコントロールを使用してVB6で基本的なアプリケーションを作成し、Windows 7(x64)の上でそれを実行しているとうるさく、それは登録COMコンポーネントと作品をピックアップ.NETアプリケーションまたはプロジェクトを横並びに実行することはできますが、コントロールは見えません。
アップデート2
私は基本的なWinformsのコントロールを使用して、私のXPボックスのアプリ(しかし自由をregない、すなわち登録する制御を必要とする)を作成した場合。 Windows 7(x64)マシンでこれを実行すると、コントロールを登録せずに(期待どおり)起動できなくなります。コントロールがx86/x64レジストリに登録されているかどうかは、どちらの方法でも開始されますが、コントロールは見られません。
アップデート3
私は(予想通り)コントロールが登録されていない限り、フォームデザイナが失敗するというのが私のWindows 7環境で私が実行した場合のWinFormsプロジェクト(XPおよびCOMで作成された無料REG)ことに気づきました再度どのレジストリが登録されているかは気にしていないようです。登録したら、設計者は、(制御なしで)見られるとビルド時に次の警告が見られる形式:
は、この警告を研究するが無駄となっている、Visual Studioが間違って見ていることを示していると思われますレジストリのパスが、私はこれを解決する方法を見つけることができません?
Win7マシンのOCXコントロールでVB6アプリケーションを正常に使用できますか?ところで、画像をimageshackやそれに類するホスティングプロバイダにアップロードして質問にリンクさせることができます。 –
例外を生成する登録問題のようには聞こえません。 VB6コントロールのように聞こえますが、.NETフォームではホストできません。すべてのシナリオがサポートされているわけではありませんが、適切に動作するActiveXコントロールでなければなりません。ウィンドウなし、自分のトップレベルウィンドウなどを作成することはできません。そのコントロールの所有者と協力して進んでください。 –
@DanielHilgarth、それは非常に良い質問です。以前の開発者のVB6アプリケーションは非常に貧弱で、それらをインストールする 'カスタム'が必要だったので、私はこのルートを前に行っていませんでした!しかし、私はそれを行こう! – snipey