VB6で作られたActiveX.exeコンポーネントを、ブラウザ(IE8)上で動かそうとしています。
ActiveX.exe内のメソッドやプロパティ値を呼び出すことはできるのですが、イベントを取得することができません。
ActiveX.DLLなのであれば成功しているのですが、ActiveX.EXEではできません。これは何が間違っているのか(それともそもそもできないのか)を知りたいと思っています。
どのようにすればよいのか教えていただけませんでしょうか。
下記に動作を試したコードを記します。
ActiveX.DLL を Test01.html で表示させ、ボタンを押下すると
◆DLL内のMsgBox:"TESTFUNC01-CALLED"が表示される
◆html上のスクリプトが動作して "EVENT01-RISED"が表示される
となるのですが、
ActiveX.EXE を Test02.html で同様に行うと、
◆DLL内のMsgBox:"TESTFUNC02-CALLED"が表示される
のみで、htmlスクリプトが動作しません。
これを動作させたく思っております。
'ActiveX.DLL VB6: Class1.cls -----------------------------
Option Explicit
Event Event01(ret As String)
Public Sub TESTFUNC()
MsgBox "01 TESTFUNC01-CALLED"
RaiseEvent Event01("EVENT01-RISED")
End Sub
'Test01.html ---------------------------------------------
<html>
<head>
<script type="text/javascript" FOR="TEST01" EVENT="EVENT01(xxx)">
<!--
alert(xxx);
//-->
</script>
</head>
</body>
<input type="button" value="ActiveX-DLL Test" NAME="push1"
onClick="TEST01.TESTFUNC();"><br>
<object name="TEST01" width="0" height="0"
classid="clsid:4EE9EF04-0DA9-4357-A611-D6894876301F">
</object>
</html>
==========================
'ActiveX.EXE VB6: Class1.cls -----------------------------
Option Explicit
Event Event02(ret As String)
Public Sub TESTFUNC()
MsgBox "TESTFUNC02-CALLED"
RaiseEvent Event02("EVENT02-RISED")
End Sub
'Test02.html ---------------------------------------------
<html>
<head>
<script type="text/javascript" FOR="TEST02" EVENT="EVENT02(xxx)">
<!--
alert(xxx);
//-->
</script>
</head>
</body>
<input type="button" value="ActiveX-EXE Test" NAME="push1"
onClick="TEST02.TESTFUNC();"><br>
<object name="TEST02" width="0" height="0"
classid="clsid:1400590D-046D-4DBB-8324-D5948CBF65B3">
</object>
</html>
==========================
ちなみに、ActiveX.EXE の動作の確認として以下の VB6標準EXEを作りました。
この標準EXEでは、
◆DLL内のMsgBox:"TESTFUNC02-CALLED"が表示される
◆標準EXE内のイベントプロシジャが動作して "EVENT02-RISED"が表示される
…となります。
私としては、この標準EXEの様に、前述の Test02.html も動作して欲しいと思っています。
'Form1.frm VB6 標準exe コマンドボタンを1つ配置 -----------
Option Explicit
Private WithEvents gTEST02 As TEST02.Class1
Private Sub Command1_Click()
Set gTEST02 = New TEST02.Class1
Call gTEST02.TESTFUNC
End Sub
Private Sub gTEST02_Event02(ret As String)
MsgBox ret
End Sub
よろしくお願いいたします。
ツイート | ![]() |