こんにちは。
現在あるOCXをVC++6.0で作成しているのですが、ひとつ完成
した後に、ほとんど同じ機能で画面表示だけが少しだけ違う
ものを作成する必要があり、元のプロジェクトのファイルを
全てコピーして、ファイルのリネームを行い、grepを使って
プロジェクト固有の文字を書き換えました。
例)
AAA.DSW, AAACtl.CPP...AAA.OCX
↓↓↓
BBB.DSW, BBBCtl.CPP...BBB.OCX
それで各々は問題なく動いているのですが、レジストリに
両方同時に登録することができなくなってしまいました。
どちらか片方を登録すると、もう片方がOCXの登録一覧から
消えてしまい、両方同時に使用することができません。
OCXのコア(?)のようなものが重複したコードになっていて、
名前/実態は違うけど同一のOCXとみなされているのかな、
と思ったのですが、どこを変更すれば良いのかわかりません...
よろしくお願い致します。
ガウェイン・七海様
こんばんは。
OCXって、ActivXのことでしょうか?
ちょっとつくったことがないので、”超”自信がありません。
レジストリに関わる部分なので、バックアップをとるなど十分注意してください。
なお、本件により不具合が発生しても、当方は責任をとれませんので、ご了解ください。(逃)
(最悪の場合、いっぱいごちそうする とかそーいうレベルでは無くなるかも知れません(笑))
さて、本題です。
えっ、ActiveXではない?じゃー、わかりませんです。m(__)m
書き換えは自動で行われたのでしょうかね?
まあ、実際私も(やったことがないので)ヒントくらいしか提供できませんが。
==ここではプロジェクト名を Actxとしています==
if (Project == MFC ActiveX Controlwizard){
ActxCtl.cppのファイルを見てください。
下記のコードがあると思います。
/////////////////////////////////////////////////////////////////////////////
// クラス ファクトリと guid を初期化します
IMPLEMENT_OLECREATE_EX(CActxCtrl, ACTX.ActxCtrl.1,
0x8eff027, 0x6a83, 0x11d5, 0x80, 0xe2, 0xea, 0x85, 0x3f, 0x97, 0xc5, 0x3b)
/////////////////////////////////////////////////////////////////////////////
// タイプ ライブラリ ID とバージョン
IMPLEMENT_OLETYPELIB(CActxCtrl, _tlid, _wVerMajor, _wVerMinor)
/////////////////////////////////////////////////////////////////////////////
// インターフェイス ID
const IID BASED_CODE IID_DActx =
{ 0xb6022ee4, 0x6a97, 0x11d5, { 0x80, 0xe2, 0x98, 0x8e, 0xe1, 0x52, 0x2b, 0x3b } };
const IID BASED_CODE IID_DActxEvents =
{ 0xb6022ee5, 0x6a97, 0x11d5, { 0x80, 0xe2, 0x98, 0x8e, 0xe1, 0x52, 0x2b, 0x3b } };
こんなのがありますから、多分このあたりを操作すればレジストリは変更されると思います。
ある本には、これらが登録されるレジストリ情報に等しいと書いてあります。
どういじくったらよいかはわかりません。十分吟味して、実験してください。
あと、MSDNのテクニカルノート64も読んでおいたほうが良いと思います。
(先にも述べましたが、上記のコードはプロジェクトサンプルをActxとして生成されたものです。)
} else {
わかりまへんm(__)m
}
それから、マルチポストはできるだけしないように心がけてください。
「別で投稿したけどレスがつかないので」とか書くようにするのがエチケットだそうです。
(私も気をつけますけど(汗))
いつもレスありがとうございます。
そうです、ActiveXのことです。
ですので、指摘していただいたGUID、uuid関連を
修正したところ、解決致しました。
他の方に教えて頂いたのですが、GUIDGEN.EXEという
VC付属(Windows付属かも)のツールでグローバルに
一意で'あろう'IDを生成して、置き換えました。
(タイムスタンプから一意性の高いものを作成して
いるようです)
マルチポストに関しては大変申し訳ないです。
切羽詰っていたので、ついやってしまいました。
いつも色々丁寧に指摘して頂いて、申し訳ないですm(_ _)m
以後気をつけます。