この人頭いいなと思ったエピソード

いつもお世話になっています。
ブックオフでプログラミングC#第5版を買って、順に読み進めています。
23章 .NETとCOMの連携
23.1.1 ActiveXコントロールの作成
の所で、
もしもVB6を持っていないかコントロールの作成は退屈で省略したいという場合は、O'ReillyのWebサイトhttp://examples.oreilly.com/9780596527433/からダウンロードすることもできます。
とあるので、ダウンロードし、
23.1.2 ActiveXコントロールを.NETにインポートする
の所にある、Regsvr32 CalcControl.ocx
を実行して、
23.1.2.1 コントロールのインポート
の所で、[ツールボックス アイテムの選択] ダイアログが表示されるので、図23-6のように [COM コンポーネント] タブを選択した後、追加するコントロール(CalcControl.Calculator)にチェックをつけます。
とあるのですが、そのような名前のコントロールは見当たらず、先に進めなくなってしまいました。

どのような原因が考えられますか。

ちなみにダウンロードしたファイルの直リンは↓これです。
https://resources.oreilly.com/examples/978059652 …

A 回答 (2件)

「自己登録に失敗しました」で検索したら、以下のサイトが見つかりました。


https://www.autodesk.co.jp/support/technical/art …
これの逆の状態ではないかと予想されます。
・Visual Studioは 2022からは64bitアプリになっている
・CalcControl.ocxは当時のことを考えると32bit版だと思われる


目次を見るかぎり、その章の内容は普段C#を使う分には使うことのないものです。
.NET環境だけでできないことを、Windowsの機能やC/C++で作ったライブラリを使って実現するための方法です。
ですが、それらの多くは、別の手段が用意されています。
・ActiveXコントロール→同等のコントロールが公開されていたり売ってたりする 等

そういうこともできる、とだけ学習しておいて、どうしても必要になったら詳細を確認する、ということでいいかと思います。
    • good
    • 0
この回答へのお礼

貴重なお休み中に調査いただき感謝いたします。

ご紹介のページの逆の状態ではとの事で、このページに記載されている手順を、自分の環境に読み替えてやってみました。つまり32となっている所を64に、64となっている所を32に読み替えてやってみました。

しかし、最後のFormのLoadイベントにocxの初期化処理を追加する所で、このocxにはFileNameプロパティという物が無いようで、行き詰まりました。

残念ですが、ここは先生の助言に従って、あきらめる事にします。
私は内心、そのお言葉を待っていたのかもしれません。

よって、晴れ晴れとした気持ちで先へ進みたいと思います。

お礼日時:2023/05/04 14:05

ActiveXコントロールはほとんど使ったこと無いし、その本は読んだことないので、詳細はわかりませんが。



○お使いのVisual Studioのバージョンは?
https://www.oreilly.co.jp/books/9784873113968/
によると、2009年の本です。Visual Basicは2008が最新のはずです。
最新のVS2022とは画面が結構違います。

○Regsvr32 CalcControl.ocxは正常にできましたか?
・管理者権限のターミナルで実行したか?
・32ビット/64ビットの違いは大丈夫か?
当時はまだまだ32ビットXPがメインの時代、64ビットOSはそれほど普及していません。
それがらみの失敗が発生しているかもしれません。
https://support.microsoft.com/ja-jp/topic/regsvr …
    • good
    • 0
この回答へのお礼

貴重なお時間をいただき感激です。

環境を近づけるために、なるべく古いVisual Studioを入れようと試みましたが、うまく入らず、結局Windows10にVS2022という環境となっています。

23.1.2 ActiveXコントロールを.NETにインポートする
の所で、(Windows Vista環境では以下のコマンドを管理者権限で実行する必要があります)。
Regsvr32 CalcControl.ocx
とあるので、コマンドプロンプトを管理者として実行しました。
コマンドを実行すると、「成功しました」的なメッセージが表示されました。
しかし、[ツールボックス アイテムの選択] ダイアログのコンポーネント一覧に出てこないので、ダウンロードしたocxを、
C:\Windows\System32に移動して、
再度Regsvr32 CalcControl.ocxを実行したら「失敗しました」的なメッセージが出て、グーグル先生に聞いたところ、
C:\Windows\SysWOW64に登録するとうまくいくという情報を入手したので、
ocxをC:\Windows\SysWOW64に移動して、
再びRegsvr32 CalcControl.ocxを実行すると「成功しました」的なメッセージが表示されました。
しかし依然として[ツールボックス アイテムの選択] ダイアログには出てきません。
このダイアログ中に[参照(B)...]というボタンがあるので、ここから直接登録できるのかと思い、ボタンを押してocxを選択すると、
「C:\Windows\SysWOW64\CalcControl.ocxの自己登録に失敗しました。」と表示され、行き詰まりました。

当方、ocxの登録という行為について、良く分かっておらず、ここまで単に本のとおりにやってきました。
32ビット/64ビットの違いというのも良く分かっていません。
画面で確認すると、入っているWindows10は64ビットオペレーティンシステムとなっています。

以上より、この後のトラブルシューティング手順をご教示いただきたく存じます。

お礼日時:2023/05/02 11:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報