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

わんくま同盟

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

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


(過去ログ 153 を表示中)
■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


返信 編集キー/


管理者用

- Child Tree -