
いつもお世話になっています。
ブックオフでプログラミング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 …
No.2ベストアンサー
- 回答日時:
「自己登録に失敗しました」で検索したら、以下のサイトが見つかりました。
https://www.autodesk.co.jp/support/technical/art …
これの逆の状態ではないかと予想されます。
・Visual Studioは 2022からは64bitアプリになっている
・CalcControl.ocxは当時のことを考えると32bit版だと思われる
目次を見るかぎり、その章の内容は普段C#を使う分には使うことのないものです。
.NET環境だけでできないことを、Windowsの機能やC/C++で作ったライブラリを使って実現するための方法です。
ですが、それらの多くは、別の手段が用意されています。
・ActiveXコントロール→同等のコントロールが公開されていたり売ってたりする 等
そういうこともできる、とだけ学習しておいて、どうしても必要になったら詳細を確認する、ということでいいかと思います。
貴重なお休み中に調査いただき感謝いたします。
ご紹介のページの逆の状態ではとの事で、このページに記載されている手順を、自分の環境に読み替えてやってみました。つまり32となっている所を64に、64となっている所を32に読み替えてやってみました。
しかし、最後のFormのLoadイベントにocxの初期化処理を追加する所で、このocxにはFileNameプロパティという物が無いようで、行き詰まりました。
残念ですが、ここは先生の助言に従って、あきらめる事にします。
私は内心、そのお言葉を待っていたのかもしれません。
よって、晴れ晴れとした気持ちで先へ進みたいと思います。
No.1
- 回答日時:
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 …
貴重なお時間をいただき感激です。
環境を近づけるために、なるべく古い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ビットオペレーティンシステムとなっています。
以上より、この後のトラブルシューティング手順をご教示いただきたく存じます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.NETでActiveX(OCXファイル)作成
Visual Basic(VBA)
-
regsvr32で登録された一覧を知りたい
UNIX・Linux
-
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
-
4
API、OCX、DLLって何でしょう?
Visual Basic(VBA)
-
5
.NETでActiveXコントロールを使う
その他(開発・運用・管理)
-
6
ActiveXコントロールはどこへいった
その他(開発・運用・管理)
-
7
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
8
ソースから参照しているOCXの一覧を確認する方法
Visual Basic(VBA)
-
9
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
10
VBの画面サイズについて
Visual Basic(VBA)
-
11
regsvr32でActiveX登録を行ったocx
C言語・C++・C#
-
12
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
13
OCXって何ですか?
Visual Basic(VBA)
-
14
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
15
MSFlexGrid
Visual Basic(VBA)
-
16
InputMan の imTextについて
Visual Basic(VBA)
-
17
Visual Basic 2010を使ってRS-232Cとの通信をした
Visual Basic(VBA)
-
18
VB6からVB2010への変換について
Visual Basic(VBA)
-
19
意味不明の実行時エラーで困っています
その他(プログラミング・Web制作)
-
20
VS 2008(VB.NET)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
VisualStudio MFC変数が追加で...
-
連続で印刷すると画像が更新さ...
-
コモンダイアログコントロール...
-
TabControlとToolBarの背景色変更
-
文字色を変えたい(ACCESS VBA)
-
エクセルのコントロールツール...
-
DateTimePickerでに年月までし...
-
リストボックスの同期
-
アイテムを点滅させる
-
VC++ダイアログボックスの表示...
-
エクセル - リストボックスのマ...
-
タブインデックスをより簡単に...
-
EXCEL2003 VBAにつ...
-
Accessのタブコントロールを2...
-
「アイテムは収集されました」...
-
グラフの交点の求め方(Excel)
-
勝手にウィンドウが開いて止ま...
-
エクセルで作った新しいウイン...
-
マインクラフト(pc版)で座標...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
スピンボタンを右クリックして...
-
ActiveXコントロールを.NETにイ...
-
DateTimePickerでに年月までし...
-
フォームでPDFを表示させた...
-
コモンダイアログコントロール...
-
CEdit の内容が変わった時にメ...
-
エクセル - リストボックスのマ...
-
regsvr32でActiveX登録を行ったocx
-
アイテムを点滅させる
-
プロパティシートのタブの名前...
-
警告表示を非表示にしたい
-
TabControlとToolBarの背景色変更
-
EXCELVBA リストボックスで選択...
-
空のリストビューで1行おきに...
-
C#.NETでのCOMコンポーネント作...
-
スクロールバーを点滅させない方法
-
連続で印刷すると画像が更新さ...
-
Accessのタブコントロールを2...
おすすめ情報