• ベストアンサー

VB5.0のocx?について

知り合いに聞かれたことなのですが、 VB5.0の開発環境のあるPCについて、 Windows2000からWindowsXPにOSを入れ替えたそうです。 そうしたところ、 VBのダイアログボックスだけがバージョンアップされてしまった、 ということで、 それだけ元のバージョンに戻すのはどうしたらよいでしょうか? ちなみにVB6.0にコンバージョンするとなると、 割と手がかかりそうなので、 ひとまずはVB5.0のままでいくようです。 VB5.0のランタイムをインストールするとか、 どうにかしてocxを入れ替えたらよいのかな? と思うのですが、 最適な対処法がよくわかりません。 ご存知の方がいらっしゃったら、よいと思われる対処法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.4

コモンダイアログですか、ダイアログと書いていたのでてっきりフォームの意味ではないかと思いました。 そのプラグラムのプロジェクト(VBP)を開いて、VBのメニュー、[プロジェクト]内から[コンポーネント]を選択します。 インストールされているコンポーネントの一覧から、 [Microsoft Common Dialog Control]を探します。 おそらく現在 [Microsoft Common Dialog Control 5.0] [Microsoft Common Dialog Control 6.0] と二つ並んでいて、6.0の方にチェックが入っている状態ではないかと思います。 6.0はVB6のためのコンポーネントで、それを指定したため開発ライセンスがないという事で、使用を拒否されているということだと思います。 VB6を購入、インストールしていないのに、なぜVB6のコンポーネントがインストールされているかと言えば、フリーソフト(とは限りませんが)などでVB6で開発したアプリケーションをインストールした際に一緒にインストールしたためでしょうね。(もしくは、XPには最初から一部のVB6コンポーネントが登録されているのかも知れません) インストールはされていても、開発ライセンスがないために、リストには表示されるが開発作業に使用できない状態、なのにそれを使用しようとしているということでしょう。 たぶん[Microsoft Common Dialog Control 5.0]に変更することで解決です。 とはいえ、これって仕事で作成しているプログラムじゃないですよね?趣味であっても、完成したプログラムを公開・配布を考えているなら、少々怖いですね。 もし、CommonDialog6.0で開発できていたと仮定すると、開発ライセンスがない=配布ライセンスもない=公開・配布する際には違法配布になってしまう。 同じような事が、他のDLLやOCXで発生しているかも知れません。

musashi228
質問者

お礼

ご回答ありがとうございます。 確かXPに最初から登録されていたんだと思います。 対処法を教えてみますね。 このプログラムですが、 知人自身が業務上の事務処理に使用しています。 販売、公開、配布などをすることはありません。 念のため、ライセンスについての注意もしておこうと思います。

その他の回答 (3)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.3

作成したプログラムのフォームの、アイコンやタイトル、最大化/最小化ボタンが表示される部分、およびウィンドウの枠がXPのウィンドウと同じ外見になってしまっている。 フォームの中身(ボタンなど)は以前と変わっていない、という事を言いたいのでしょうか? もし上記で合っているとすると、最終的に得たい結果によって何をするかが異なります。 1)ウィンドウ枠のみではなく、中身もXP仕様に変更したい。 2さんの言うように、マニフェストファイルを作る事で対応できます。 http://support.microsoft.com/kb/309366/ja リンクはVB6の例ですが、VB5でも若干の修正で対応できます。 2)Win2000の頃と同様な、開発環境画面に戻したい。(実行環境はどうでもいい) XPのヴィジュアルスタイルを無効にします(Windowsクラシックを選択します) 3)開発環境、実行環境とも、Win2000の頃と同様な画面に戻したい。 不可能です。 あえて言えば、フォームのBorderStyleをなしに設定して、ウィンドウ操作系の機能をすべて自作することで、ごまかす方法が考えられますが。 これはフォームの外枠(タイトルバーなどの部分)はOSが管理し、描画している領域だからです。 OS寄りの用語で言うと、ウィンドウ領域と言われることが多いですかね(ノンクライアント領域と言われることもあるようですね)。 ボタンなどを配置する領域は、クライアント領域と言います。(form1.InnerWidth,Form1.InnerHeightなどで取得できる、フォーム内部の事です) 質問の意図を外していたら、申し訳ない。

musashi228
質問者

お礼

ご回答ありがとうございます。 質問を受けた知り合いに詳しく確認したところ、 VB5.0にてプログラムを製造しようとしたときに、 コモンダイアログがフォームに貼り付けられない という現象だったようです。 (そこでバージョンを確認したところ6.0になっていたらしいです。) ocxはレジストリに登録してあるから変更は難しそう、 とのことで、 動作保障もされていないししょうがないか、 という話になっております。 質問がアバウトでわかりにくく、すみませんでした。 外観に関する問題ではありませんでしたが、 マニフェストファイルのことを知らなかったので、 大変勉強になりました。 ありがとうございました。

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.2

OSのAPIを使用してダイアログを使用しているからではないでしょうか? いっそ外観すべてをXPスタイルにしてみてはどうでしょうか? マニフェストファイルを作るだけですのでさほど難しくはないはずです。 http://hanatyan.sakura.ne.jp/index.html を参考になさってみてください。 OCXはSystemのフォルダに追加すればたいていは動くと思いますが、保障はできません。

musashi228
質問者

お礼

ご回答ありがとうございました。 外観についてではなく、開発時に使用できない ということだったようです。 参考URLなど、ありがとうございます。 勉強になりました。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

VB5自体 WinXPでの動作保証がありませんがその点は大丈夫なのでしょうか? http://www.microsoft.com/japan/msdn/vstudio/support/tools.aspx まぁ Win2000でも動作保障していないようですけど ・・・ OS付属のコントロールだと不具合が出そうですが・・・ 具体的にどのようなコントロールなのでしょう

musashi228
質問者

お礼

ご回答ありがとうございます。 コントロールはコモンダイアログでした。 動作保障していないためか、対処は無理そうです…。 参考URL、ありがとうございました。

関連するQ&A

  • OCXについて教えてください。

    お世話になります。 カテゴリが違っていたらすいません。 システム開発の一部で、サーバーにデータをFTPさせるアプリをVB6で作りました。私の上司の希望でVBランタイムをユーザーにインストールさせる手間は省きたいとのことで、必要最低限のOCXをsystem32フォルダにコピーして(実際はバッチ処理)動かせるかを検証しておりました。 あるPC(win2k server,office2k有)に、ちょうど同じ名前(COMDLG32.OCX)のOCXが存在しているのですが、バージョンが5.1で1つ下でも有り、実行できませんでした。このOCXにコピーを行っているバージョン6.0のOCXを上書きしても問題はでませんでしょうか?? ちなみに、ファイルサイズも10KBほどバージョン6.0の方が大きいです。 もっと大きく枠を広げて言いますと、基本的にWindows系であれば、前のバージョンを踏襲しているものと考えていいでしょうか??

  • VBで作成したOCXでバージョンが異なるのエラーが出ます

    VB6.0(SP5)+Windows2000(SP4)の環境です VBでAcitveX OCXを作成しましたが、使用する他のアプリケーションをディストリビューションウイザードでセットアッププログラムを作成し、他のPCへインストールすると「OCXのバージョンが古い可能性がある。最新のバージョンを入手してください」となりインストールができません VBでAcitveX OCXの作成では、2度目のコンパイルからバイナリ互換を指定しています 開発環境では、全て正常に動作するのですがインストール時にエラーとなります OCXを使用するアプリケーションは何度もコンパイルしていますが、OCXは随分前からコンパイルしていません 市販のOCXのように、system32にコピーしてregsvr32で登録するだけにしたい場合には、何を気をつければよろしいのでしょうか? OCX作成の指南をお願いします 宜しくお願いします

  • VB2005でOCXを動的に呼び出すには?

    お世話になります。 当方の環境はWinXP SP2,VB2005Proです。 現在作成中のアプリで、とあるCOMコンポーネントを使っているのですが、 どうやら そのOCXが自由配布は出来ないようで、依頼元から 「OCXがインストールされている場合のみ、それを使用する機能を  生かしてほしい」 と言われました。 依頼元曰く「たぶんコンポーネントを参照設定せずにコーディング しないといけないと思う」との事なのですが、それは可能なのでしょうか? また、可能であれば、方法(または方針)を教えていただけると有難いです。 (もしかしてOCXと処理を完全に分離してDLL化しないとダメ?)

  • VB6ランタイム

    最近インストールしたフリーソフトには、 TABCTL32.OCX・MSCOMCTL.OCX というファイルも同梱されており 一緒にインストールされます。 場所は、C:\WINDOWS\system32です。 TABCTL32.OCX・MSCOMCTL.OCX は、VB6ランタイムのファイルですが、 バージョンを調べるとかなり古いものでした。 VB6ランタイムは、過去のバージョンも含め脆弱性はありませんか。 よろしくお願いします。

  • OCXの作成

    他の環境(PC)で開発したOCXを、他の環境(PC)で作成使用とすると、 エラーメッセージ表示:「コンパイルエラープロジェクトまたはライブラリが 見つかりません」と表示されます。その後ファイル内のleft関数にフォーカス されます。OCXの作成とは、VBPファイルを開き、「ファイル」→ 「XXXX.ocx(exe)を作成」を指します。[開発環境]win98,VB6.0(SP3) なにかライブラリなどを追加する必要があるのでしょうか?   

  • VB2008によるOCX作成、またはHTMLからのDLL呼び出しは可能でしょうか?

    こんにちは。 はじめての投稿になります。 私は現在、「ファイルを開く」のコモンダイアログボックスを起動できるHTML画面を作りたいと思っております。 その画面ではサーバ側のファイルを閲覧させたいのですが、認証やセキュリティなどの観点から、 ダイアログボックスの起動はクライアント側で動作するようにしたいです。 それにあたって、ダイアログボックスを呼び出すオブジェクトをAxtiveXコントロール(OCX)で作成し、 そのOCXをHTMLから呼び出すことで実現できないかと考えました。 そこで、以下のことを調べております。 (1)無償のVB開発環境を使ってAxtiveXコントロールを作成することができるか? (2)AxtiveXコントロールを作成できないなら、AxtiveX DLLをHTMLから呼び出せるか? ちなみに現在使用している「無償のVB開発環境」は、Visual Studioの Visual Basic 2008 Express Edition です。 (1)に関しては、VB6ではAxtiveXコントロールを作成できたと聞きますが、どうもVB2008では(.Netでは)作成できないようです。(現在までに見つけた情報に、「.Netで作成できる」というものがないため) (2)に関しては、VB2008 Express Edition を使って、ダイアログボックスを呼び出す AxtiveX DLL を作成することには成功しています。 VBのCOMクラスのテンプレートにダイアログボックス起動の関数を記述し、ビルドしてdllを作成。 ↓ 別途VBによるWindowsフォームアプリケーションを作成し、「参照の追加」で上記dllを登録してダイアログボックス起動の関数を呼び出す。 という方法で、ダイアログボックスを呼び出せました。 ですので、HTMLの画面からも同じようにdll呼び出しができないかと思ったのですが、現在のところ方法が見つかりません。 ダイアログボックスを開く機能さえあればよく、ユーザーインターフェースは不要なので AxtiveX DLL でもよいと思ったのですが、HTMLからの呼び出しにはDLLではなくOCXを用いるという情報しか見つけられませんでした。 以上のことから、VB2008ではHTMLからダイアログボックスを呼び出すActiveXを作れないのではないか?と思える状態なのですが、それが可能であるという話がもしありましたら、お教えいただきたく思います。 最低限「クライアント側からのダイアログボックス起動ができるHTML」「ダイアログボックス起動はVBで作成」という条件を満たせればよいので、(1)(2)で実現できなければ別の方法を探すことにします。 最後に 必要かどうかわかりませんが、(2)で試しに作ったダイアログボックス呼び出しのCOMクラスのソースを載せておきます。 ご回答の参考になりますでしょうか。 Imports System.Windows.Forms <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _ Public Class ComClass1 Public Const ClassId As String = "2bdd38a4-f946-44e2-af47-5b9cbd2c24d5" Public Const InterfaceId As String = "fcd22890-f4cd-4e2a-b8c0-ae83f290c250" Public Const EventsId As String = "86c74809-966a-47cf-9324-adce776030eb" Public Sub New() MyBase.New() End Sub Public Function subOpenFile(ByVal inFilePass As String) As Boolean subOpenFile = False 'OpenFileDialogクラスのインスタンスを作成 Dim ofd As New OpenFileDialog() If inFilePass = "" Then ofd.InitialDirectory = "C:\" Else ofd.InitialDirectory = inFilePass End If ofd.Filter = "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*" ofd.FilterIndex = 2 ofd.Title = "開くファイルを選択してください" ofd.RestoreDirectory = True ofd.CheckFileExists = True ofd.CheckPathExists = True 'ダイアログを表示 If ofd.ShowDialog() = DialogResult.OK Then Console.WriteLine(ofd.FileName) End If subOpenFile = True End Function End Class (呼び出し側では以下の記述で呼び出しに成功しました) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Test As New COMTest1.ComClass1 Call Test.subOpenFile("C:\WINDOWS") End Sub 以上、よろしくお願いいたします。

  • 既にVBアプリが入っているPCでの自作VBアプリの実行でエラー

    お世話になります。 なんとかVBでEXEまで作成しました。 自分のPCでは実行できたのですが、 他のPCではエラーになります。 MSFLXGRD.OCXがない・・・みたいなエラーです。 エラーになったPCには既にVBのアプリケーションが インストールされていて、必要なランタイムは 多分そろっていると思います。 検索したらMSFLXGRD.OCXは見つかりました。 これってバージョンの問題ですか?? フリーで色々あるランタイムパッケージなどを ダウンロードした方がいいですか? 既存のAPが動かなくなると困るので、 あんまりしたくないんですが。 VB6.0でOSはどれも2000です。 よろしくお願いいたします。

  • Tabctl32.ocxについて

    はじめまして。 早速で恐縮ですが、WIN95、VB5(SP3)の環境で開発しております。 デザイン時、Form上にSStabコントロールを置こうとすると、 『141:コントロール'Sstab1'はロードできません。 ライセンスが見つかりません。』というエラーが出てしまい、コントロールを 配置することが出来ません。 正常にForm上にSStabコントロールを作れるPCより、Tabctl32.OCXをコピーし、 C:\Windows\System上に上書きしても、同じ現象が出てしまうので、 『Tabctl32.OCX』のバージョンの問題ではないような気がします。 どなたか、解決方法をご存知の方がいらっしゃいましたら、 よろしくお願いします。

  • OCXをサポートしている開発環境?

    こんばんは。 こんなことみなさんに尋ねたら笑われてしまうかもしれませんが、 OCXファイルっていうのは具体的にはどういったものなんでしょうか? DLLファイルとどう違うのですか? プログラム言語で「OCXをサポートしている開発環境」に VBがあることは何となく分かるのですが、 他の言語はどうなんでしょうか? たいていの言語はサポートしているんですか? どうかよろしくお願いします。m(_ _)m

  • OCXのレジストリ登録

    BCB5にて、OCXを作成しました。 開発環境では、もちろんレジストリ登録して(ツールがやってくれるんです)動作しています。 でも、他環境にそのOCXと関連DLL(と思われる)をインストールして、 REGSVR32 TARGET.OCX としても、エラーが出て登録できません。 エラーダイアログには、「Load Library(”Target.ocx”)failed. GetLastError returns 0x00000485」 と表示されます。これは、どんなエラーなのでしょうか? 関連DLLをインストールしたといいましたが、実はあんまり自信がありません。必要なDLLとは、どのようにしたら確実に判るものなのでしょうか? よろしくお願いします。

専門家に質問してみよう