
いつもお世話になっています。
ブックオフでプログラミング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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL ActiveX コマンドボタンで実行する前にいったんmsgBoxで確認を求めたい 1 2022/07/06 19:41
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
- Excel(エクセル) ActiveXコントロールのコマンドボタン移動させようとすると消える 1 2022/04/26 22:29
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- ストレス 悩んでいます 前まで腹が立っても自分の中で感情を溜めることができていましたが最近感情のコントロールが 2 2023/01/21 09:33
- ストレス 悩んでいます 前まで腹が立っても自分の中で感情を溜めることができていましたが最近感情のコントロールが 5 2023/02/18 16:54
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- その他(コンピューター・テクノロジー) コントロール+Fキーについて 2 2022/10/03 16:59
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.NETでActiveX(OCXファイル)作成
Visual Basic(VBA)
-
API、OCX、DLLって何でしょう?
Visual Basic(VBA)
-
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
-
4
.NETでActiveXコントロールを使う
その他(開発・運用・管理)
-
5
VB6.0でのOCX・DLLの作り方
Excel(エクセル)
-
6
regsvr32で登録された一覧を知りたい
UNIX・Linux
-
7
ソースから参照しているOCXの一覧を確認する方法
Visual Basic(VBA)
-
8
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
9
OCXって何ですか?
Visual Basic(VBA)
-
10
WIN32でOCXを利用する方法を教えて下さい!
C言語・C++・C#
-
11
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
12
VB6からVB2010への変換について
Visual Basic(VBA)
-
13
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
14
ActiveXコントロールはどこへいった
その他(開発・運用・管理)
-
15
ActiveX DLL と ActiveXコントロールの違い
Visual Basic(VBA)
-
16
VBの画面サイズについて
Visual Basic(VBA)
-
17
InputMan の imTextについて
Visual Basic(VBA)
-
18
'msflxgrd.ocx'云々という表示が出て、ソフトが起動できません。
その他(ソフトウェア)
-
19
意味不明の実行時エラーで困っています
その他(プログラミング・Web制作)
-
20
VS 2008(VB.NET)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
DateTimePickerでに年月までし...
-
ダイアログボックスのボタンコ...
-
ダイアログを継承したダイアロ...
-
ActiveXコントロールを.NETにイ...
-
スピンボタンを右クリックして...
-
VB.Net Tabコントロール中のす...
-
コモンダイアログコントロール...
-
アイテムを点滅させる
-
【C#】フォームの値を保存して...
-
フォームでPDFを表示させた...
-
TabControlとToolBarの背景色変更
-
ダイアログのスクロールバー
-
TabControlが変る瞬間イベント
-
連続で印刷すると画像が更新さ...
-
VB6.0のデザイン時 コントロー...
-
C#.NETでのCOMコンポーネント作...
-
VScrollBarの点滅を何とかしたい。
-
リストコントロール(MFC or API...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
DateTimePickerでに年月までし...
-
スピンボタンを右クリックして...
-
ActiveXコントロールを.NETにイ...
-
コモンダイアログコントロール...
-
フォームでPDFを表示させた...
-
CEdit の内容が変わった時にメ...
-
連続で印刷すると画像が更新さ...
-
EXCELVBA リストボックスで選択...
-
regsvr32でActiveX登録を行ったocx
-
TabControlとToolBarの背景色変更
-
ダイアログボックスのボタンコ...
-
Excel VBAでのMultipageの選択
-
エクセル - リストボックスのマ...
-
VB6でタブコントロールが見つか...
-
ワードのドロップダウンリスト
-
空のリストビューで1行おきに...
-
C#でChartコントロールを...
-
警告表示を非表示にしたい
おすすめ情報