シンプルな Hello World メッセージ ボックスの ActiveX コントロールを実行しようとしています。最初にクラス ライブラリを作成し、現在は dll を作成し、次に HTML ページを作成して activeX コントロールを呼び出しました。
<!DOCTYPE>
<html>
<head>
<title>DemoActiveX</title>
</head>
<body>
<OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55">
</OBJECT>
<script type="text/javascript">
try {
var obj = document.DemoActiveX;
if (obj) {
alert(obj.SayHello());
} else {
alert("Object is not created!");
}
} catch (ex) {
alert("Some error happens, error message is: " + ex.Description);
}
</script>
</body>
</html>
私のマシンで試したとき、regasm /codebase "dll path"を使用してdllを登録していましたが、うまくいきました。
別のマシンで実行しようとしたときの問題は、次の手順に従いました: 1) セットアップ プロジェクトを作成し、dll ファイルを追加しました。
2) .inf ファイルを作成し、次の 2 つのコンテンツを試しました。
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
ActiveX.dll=ActiveX.dll
[ActiveX.dll]
file-win32-x86=thiscab
clsid=400DCE17-4B26-4E59-9A88-AF39E2BE4A55
FileVersion=1,0,0,0
RegisterServer=はい
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Setup Hooks]
install=install
[install]
run=msiexec.exe /package """%EXTRACT_DIR%\DemoActiveXSetup.msi""" /qn
3) .inf ファイルと setup.exe ファイルを含む .CAB ファイルを作成しました。 4) HTML ページのオブジェクトを次のように変更しました。
<OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55"
codebase="ActiveXCAB.CAB" ></OBJECT>
他のマシンでページを開こうとすると、要求ウィンドウが開き、CAB を開く要求が表示され、[はい] を押しても何も起こりませんでした!!!!! setup.exe または msi ファイルが開かないのはなぜですか?? ところで、セットアップ ファイルを手動でインストールすると、activeX が機能しました。