不要なActiveXをプロジェクトから開放する方法

[戻る]
クリリン 2002/02/21(木) 17:07:28
みなさん、こんにちは。
誤って、登録してしまったActiveXコントロールはどうやって、解除したらいいのでしょうか?
VCに詳しい方に聞いても、問題ないから、気にするな!
と言われましたが、気になってしょうがありません。
どなたか教えてください。

試~1 [E-Mail] 2002/02/22(金) 11:44:55
こんにちは。

ActiveXと言うとDLLですよね?
「ファイル名を指定して実行」で

regsvr32.exe /u 〜.dll

と、すれば良いはず。
COMとかの.exe型のコンポーネントとかだと

〜.exe -UnRegServer

と、するようですね。

クリリン 2002/02/22(金) 13:43:44
ごめんなさい。表現がおかしかったですね。
>登録してしまったActiveXコントロールはどうやって、解除したらいいのでしょうか?
これは、VCで[プロジェクト]->[プロジェクトへ追加]->[コンポーネントおよびコントロール]で
登録するActiveXコントロールのことを意味します。
だから、マシンに登録しているActiveXの事ではないのです。

でも、試~1 さん・・・ありがとうございます。

不良PG 2002/02/22(金) 14:17:05
追加されたファイルをプロジェクトから外して、
ファイルを削除すれば良いのでは?

試~1 [E-Mail] 2002/02/22(金) 14:49:39
コントロールのパレットに登録されてしまった
ActiveXコントロールを削除したいんですよね?

ActiveXコントロールを追加する前と後で
変更されたファイルを調べてみました。

dswファイルの中にGUIDのような文字列が追加されていて、
それをテキストエディタなどで削除する事で
コントロールパレットから削除できました。

しかし、dswファイルの先頭には
「# 警告: このワークスペースファイルを編集または削除しないでください!」
って、書かれてますし...(^^;

不良PG 2002/02/22(金) 15:00:42
これってdswではなくて・・、dspでは・・・(^^;

クリリン 2002/02/22(金) 15:09:16
[[解決]]
dswファイル内の

Package=<3>
{{{
    {00121111-B1BA-1111-ABCD-9F9FEFEFEFEF}  <----これを削除するのですね!
}}}

削除したら出来ました。
でも、VBみたいに簡単にはいかないのですね・・・(-_-;)
それに、危険な匂いがしますね・・・

とにかく、ありがとうございます。

試~1 [E-Mail] 2002/02/22(金) 15:11:05
え?...(汗
いえ、確かにdswですよ?
(一瞬焦った ^^;)

ファイルの最後の方、

Package=<3>
{{{
    {CA8A9780-280D-11CF-A24D-444553540000}
}}}

を

Package=<3>
{{{
}}}

と、したら、消えましたが?

試~1 [E-Mail] 2002/02/22(金) 15:11:49
あ...遅かった(^^;

不良PG 2002/02/22(金) 15:16:41
あら、確かにdswであってました

ただ、dspの後ろに記述があるけど・・、大丈夫かなぁ・・

試~1 [E-Mail] 2002/02/22(金) 15:52:30
dspの後ろに追加された

# Section Test : {CA8A9781-280D-11CF-A24D-444553540000}
#     2:5:Class:CPdf
#     2:10:HeaderFile:pdf.h
#     2:8:ImplFile:pdf.cpp
# End Section
# Section Test : {CA8A9780-280D-11CF-A24D-444553540000}
#     2:21:DefaultSinkHeaderFile:pdf.h
#     2:16:DefaultSinkClass:CPdf
# End Section

こんな感じの部分ですよね?
これはActiveXコントロールを使う為のクラスに関するファイルの
情報の事だと思って、コントロールのパレットには関係が無いと
判断したのですが...。

完全にキレイな身体に戻すには、削除した方がいいかも知れませんね...。
ただし、このファイルも「# ** 編集しないでください **」なファイルなので、
危険な香りがプンプンしてますが(^^;

クリリン 2002/02/22(金) 16:04:11
実験テストをしてみました。
dspの後ろに記述されている、「# End Project」以降の削除したいところを削除すると完全に
ActiveXを削除できるみたいです。
ただし「# End Project」をのところを改行しておかないと、プロジェクトが起動しません。

どうやら、dswは、コントロールのパレットに登録するActiveXで、
dspは、内部で登録してあるActiveXみたいですね。

でも、ちょっと怖いですね・・・

クリリン 2002/02/22(金) 16:06:52
右クリックメニューの「ActiveXコントロールの挿入」をした場合は、dsp、dsw、ともに何も
記述されていませんでした。
いったい、どうゆう事なのでしょうか?

試~1 [E-Mail] 2002/02/22(金) 16:37:26
これまた、勝手な解釈ですが、メニューにある文字のとおり、
「挿入」と「追加」の違いではないでしょうか(^^;
右クリックから「挿入」すると、コントロールパレットには
追加されてませんよね。

試~1 [E-Mail] 2002/02/22(金) 16:42:13
あ、もうちょっと根本的な部分で、
「追加」を選ぶと、ActiveXコントロールへアクセスする為の
クラスが作られますよね。

クリリン 2002/02/22(金) 16:50:16
私は、dspがActiveXを管理しているのかと思っていました。
では、VCはどのようにしてActiveXやDLLを管理しているのでしょうか?
そのあたりの内部的な事が、まだ初めて一ヶ月ぐらいなもので、よく判らなくて・・・
入門書も読んでいるのですが、そのような事が書かれている本が見当たりません。
皆さんは、どんな文献を見ているのでしょうか?
ちなみに、林春比古さんの「新Visual C++6.0入門」のビギナー、シニアは両方読みました。

試~1 [E-Mail] 2002/02/22(金) 18:09:49
なんの設定も無く使えるActiveXコントロールとして、
カレンダーコントロールを「挿入」してみました。
そのまま、ビルドして実行し、コントロールが動作する事を確認した後
プロジェクトを閉じました。

すると、数個のファイルが変更されましたが、やはり、
dswやdspファイルは変更されていません。
ソースファイルも変更が無いのですが、
唯一、リソースファイル.rcに変更が有ったようなので
テキストエディタで開いてみると、

CONTROL         "",IDC_CALENDAR1,"{8E27C92B-1264-101C-8A2F-040224009C02}",
                WS_TABSTOP,7,108,165,128

と、言う記述が見つかりました。
どうやらこのGUID({8E27C92B-1264-101C-8A2F-040224009C02})で
レジストリに登録されているActiveXコントロールにアクセス
しているようです。

これは、リソースファイルのですので、コントロールの使用を止め、
ダイアログなどから削除してしまえば消されてしまいます。
その時点で、プロジェクトとActiveXコントロールとは
全く無関係になったと思ってイイのではないでしょうか?

あ、あくまでも、挿入の場合ですけどね(^^;

古いスレッドには追加発言できません。