■88675 / ) |
ActiveXObjectの呼び出しに関して |
□投稿者/ k3user (49回)-(2018/09/19(Wed) 11:47:29)
|
分類:[.NET 全般]
InterNetExplorerの「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」は無効
した状態でJavaScriptのActiveXObject使用してDLLを呼び出したのですが、
エラーとなってしまいます。
(有効にするとエラーとはならず処理が行われます。)
あるサイトを参考に呼び出すDLLに対して以下のように
IObjectSafetyをImplementsしたのですが、実装に問題があるのか
うまく動作してくれません。
コーディング方法、設定等に問題がありましたら
ご指摘、ご教示のほどよろしくお願いいたします。
■呼出し方法
Classic ASPにて以下ように呼出し
var test = new ActiveXObject("TEST.clTEST");
■環境
・InterNetExplorer Ver11
・「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」は無効
・「スクリプトを実行しても安全だとマークされているActiveXコントロールの初期化とスクリプトの実行」は有効
■その他
・TEST.dllはクライアントPCに配置されている。
・TEST.dllはGlobalSignにて署名されている。
■インターフェース:IObjectSafety
Imports System.Runtime.InteropServices
<ComImport, Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD123")>
<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
Public Interface IObjectSafety
<PreserveSig>
Function GetInterfaceSafetyOptions(
ByRef riid As Guid,
<MarshalAs(UnmanagedType.U4)> ByRef pdwSupportedOptions As Integer,
<MarshalAs(UnmanagedType.U4)> ByRef pdwEnabledOptions As Integer) As UInteger
<PreserveSig>
Function SetInterfaceSafetyOptions(
ByRef riid As Guid,
<MarshalAs(UnmanagedType.U4)> dwOptionSetMask As Integer,
<MarshalAs(UnmanagedType.U4)> dwEnabledOptions As Integer) As UInteger
End Interface
■IObjectSafetyをImplementsしたClass:IObjectSafetyTLB
Public Class IObjectSafetyTLB : Implements IObjectSafety
Private Const S_OK As UInteger = &H0
Public Function GetInterfaceSafetyOptions(ByRef riid As Guid, ByRef pdwSupportedOptions As Integer, ByRef pdwEnabledOptions As Integer) As UInteger Implements IObjectSafety.GetInterfaceSafetyOptions
Return S_OK
End Function
Public Function SetInterfaceSafetyOptions(ByRef riid As Guid, dwOptionSetMask As Integer, dwEnabledOptions As Integer) As UInteger Implements IObjectSafety.SetInterfaceSafetyOptions
Return S_OK
End Function
End Class
■IObjectSafetyTLBをInheritsしたClass:clTEST
<System.Runtime.InteropServices.ProgId("TEST.clTEST")>
<System.Runtime.InteropServices.Guid("3360D96C-4559-4158-A36A-F27B4CF00327")>
<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>
Public Class clTEST : Inherits IObjectSafetyTLB
Public Function gfInit(param1 As String) As Short
return 0;
End Function
End Class
|
|