2

私が最近投稿した別の質問によると、Classic ASP は、activeX オブジェクトがスローする可能性のあるイベントを処理できない可能性があるようです。

誰でもこれを確認できますか、できる場合はどうすればよいですか?

4

2 に答える 2

1

Classic ASP で activeX オブジェクトからのイベントを処理することは可能ですか?

COM イベントについて話している場合は、いいえ。
しかし、「イベント」という言葉の意味にもよりますが、答えは「たぶん」です。

C# での COM/ActiveXObject の作成、JScript からの使用、単純なイベントを参照してください。

COM クラス / ActiveX を作成し、それを JScript/Classic ASP でインスタンス化し、COM クラスに ASP ページで定義されたコールバックを呼び出させることができます。これは COM イベント経由では行われませんが、要件を満たす場合があります。

ASP コードは次のようになります。

<script language="Javascript" runat="server">

var greet = Server.CreateObject("Ionic.Greet");

greet.onHello = function(arg, num) {
    Response.Write("onHello (ASP) invoked.<br/>\n");
    Response.Write("  num = " + num + "  stat=" + arg.status + "<br/>\n");
};

response = greet.Hello("ASP");
Response.Write("response: " + response + "<br/>\n");
Response.Write("status: " + greet.status + "<br/>\n");

</script>

これは、作成中の COM クラスが設定可能なプロパティを公開し、そのプロパティで「既定のメソッド」を呼び出す場合にのみ機能します。このような:

public partial class Greet : IGreet
{
    public Object onHello { get; set; }

    public String Hello(string name)
    {
        var r = FireEvent();
        return "Why, Hello, " + name + "!!!" + r;
    }
}

... FireEvent は次のようになります。

private string FireEvent()
{
    if (onHello == null) return " (N/A)";
    onHello
        .GetType()
        .InvokeMember
        ("",
         BindingFlags.InvokeMethod,
         null,
         onHello,
         new object [] {});

    return "ok";
}

明らかに、変更できない COM クラスがあり、それが COM イベントを使用している場合、このアプローチは適用されません。

于 2012-06-25T02:03:40.453 に答える
1

あなたは正しい ASP はイベントを処理できません。CreateObjectスクリプト関数をイベントに接続するために必要な署名も、<script FORクライアント側で使用する可能性のある構文もサポートしていません。

于 2012-06-22T20:40:17.373 に答える