C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: VC++で作成したAvtiveXのIEからの呼び出しについ


(過去ログ 13 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■3950 / inTopicNo.1)  VC++で作成したAvtiveXのIEからの呼び出しについ
  
□投稿者/ ayumina222 (1回)-(2007/05/29(Tue) 19:14:35)

分類:[C/C++] 

はじめまして、ayumina222と申します。

VC++を使ってActiveXを作成しました。
IEから呼び出しをし、ローカルのメモ帳に引数を渡して起動したいと考えています。

作成したActiveX(ocx)はフリーツールを利用してinfファイルを作成し、cabファイルにまとめました。
テスト用に証明書も作成し、ocx、cab共に署名もしました。
この状態でサーバーにアップし下記のhtmlソースで呼び出しを試みましたがレジストリにActiveXのClassIDが書き込まれていないPCではまったく反応がありません。
あと、実行された場合にActiveXのDoPropExchange関数内に書いた処理が何回か実行されてしまいます( ̄д ̄) エー

HTMLソース
----*----*----*----*----*----*----*----*----*----*----*----*
<object classid="CLSID:****************************" codebase="http://ドメイン/XXXXXXXXXXX.cab" id="XXXXXXXXXXX" width="0" height="0" TYPE="application/x-oleobject">
<param name="test1" value="XXXXXXXXXXX" />
<param name="test2" value="XXXXXXXXXXX"/>
<param name="test3" value="XXXXXXXXXXX" />
</object>
----*----*----*----*----*----*----*----*----*----*----*----*

期待している動作としては、
「ActiveXをインストールしますか?」
というダイアログが出て、承諾するとインストールを実行し、受け取った引数をローカルのPCのnotepad.exeに渡すといった動作です。

IEのセキュリティ設定はActiveXを実行できるよう変更してあります。
証明書も登録しました。
ClassIDが登録されているPCでは期待通りの動作をしてくれているので、ocxには問題は無いと思います。
ワタシはClassIDがローカルPCで見つからなかった場合にはcodebaseのURLを参照してIEがインストールを実行するという認識でしたが、どうも期待通りに動いてくれません(●`ε´●) ぶー
codebaseのURLに直接アクセスした場合には
「cabファイルを保存しますか?」
と出るので、パスは通っていると思うのですが。。。

どなたかお分かりになる方いらっしゃいましたら、
宜しくお願いします(π0π) ウルルルル
引用返信 編集キー/
■3952 / inTopicNo.2)  Re[1]: VC++で作成したAvtiveXのIEからの呼び出しについ
□投稿者/ ちゃっぴ (24回)-(2007/05/29(Tue) 20:40:41)
ちゃっぴ さんの Web サイト
cab の中の inf はどうなっていますか?

CLSID 登録されるようになっています?

それから、user は HKCR へ書き込める権限がありますか?

XP までだと power user 以上の権限を持つ group に所属していないと書き込めませんよ。

引用返信 編集キー/
■3958 / inTopicNo.3)  Re[2]: VC++で作成したAvtiveXのIEからの呼び出しについ
□投稿者/ ayumina222 (2回)-(2007/05/30(Wed) 10:58:40)
No3952 (ちゃっぴ さん) に返信

ちゃっぴさん、ご解答ありがとうございます(*≧∇≦)

> cab の中の inf はどうなっていますか?
infファイルの内容はこんな感じです。
全部張っちゃいました(笑)

----*----*----*----*----*----*----*----*----*----*----*----*----*----*

;XXXXXXXXXXX.ocx用セットアップファイル
;DestDir=10はWindowsディレクトリへ、11はSystemディレクトリへ、空白はOccacheディレクトリ

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[DefaultInstall]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
AddReg=AddToRegistry

[RInstallApplicationFiles]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
AddReg=AddToRegistry
[DestinationDirs]
install.files=11

[SourceDisksNames]
1=%DiskName%,XXXXXXXXXXX.cab,1

[Add.Code]
XXXXXXXXXXX.ocx=XXXXXXXXXXX.ocx
[install.files]
XXXXXXXXXXX.ocx=XXXXXXXXXXX.ocx
[SourceDisksFiles]
XXXXXXXXXXX.ocx=1

[XXXXXXXXXXX.ocx]
file-win32-x86=thiscab
clsid={xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
RegisterServerr=yes
FileVersion=1,0,0,1
DestDir=

[Setup Hooks]
AddToRegHook=AddToRegHook

[AddToRegHook]
InfSection=DefaultInstall2

[DefaultInstall2]
AddReg=AddToRegistry

[AddToRegistry]
HKLM,"SOFTWARE\Classes\CLSID\{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}"
HKLM,"SOFTWARE\Classes\CLSID\{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}"
HKCR,"Licenses",,,"Licensing: Copying the keys may be a violation of established copyrights."
[RegisterFiles]
%11%\XXXXXXXXXXX.ocx

----*----*----*----*----*----*----*----*----*----*----*----*----*----*

> CLSID 登録されるようになっています?

う〜ん、記述は間違っていないと思うんですけど、レジストリには何も変化がないみたいです。。。

> それから、user は HKCR へ書き込める権限がありますか?
>
> XP までだと power user 以上の権限を持つ group に所属していないと書き込めませんよ。
>

実行しているユーザーはみんな「コンピューターの管理者」ってなってます。
問題ないと思うんですけどね〜(ノ_・。)クスン


引用返信 編集キー/
■4017 / inTopicNo.4)  Re[3]: VC++で作成したAvtiveXのIEからの呼び出しについ
□投稿者/ ちゃっぴ (25回)-(2007/06/01(Fri) 01:59:06)
ちゃっぴ さんの Web サイト
よく見たら object tag に Version が無いようですけど、その状態でもいけましたっけ?
引用返信 編集キー/
■4021 / inTopicNo.5)  Re[4]: VC++で作成したAvtiveXのIEからの呼び出しについ
□投稿者/ ayumina222 (3回)-(2007/06/01(Fri) 10:39:20)
No4017 (ちゃっぴ さん) に返信
> よく見たら object tag に Version が無いようですけど、その状態でもいけましたっけ?

省略できるみたいですよ〜。
一応Versionも付けてみましたけどダメでした /(-_-)\ウーン
Windows2000で実行したところ期待通りの動作をしたのですが、XPsp2以降だと「ActiveXをインストールしますか?」のダイアログが出て「はい」をクリックしてもまったく反応がないです。
もちろんインストールもされていません。
XP用に何か対策をしなくてはならないのでしょうか?

あと、IObjectSafetyインタフェースというものをコードに実装しないと、実行されないというのを聞いたのですが、必要でしょうか?
引用返信 編集キー/
■4302 / inTopicNo.6)  Re[5]: VC++で作成したAvtiveXのIEからの呼び出しについ
□投稿者/ ayumina222 (5回)-(2007/06/13(Wed) 10:25:09)
ActiveX実行できました〜(*≧∇≦)

開発環境をVC++6.0からVC++2003に変更して作り直し、
オプションを変えたら解決しました。
まだ、複数実行したりする不具合がありますが・・・/(-_-)\ウーン

ちゃっぴさん、いろいろアドバイスを頂きありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -