私が最近投稿した別の質問によると、Classic ASP は、activeX オブジェクトがスローする可能性のあるイベントを処理できない可能性があるようです。
誰でもこれを確認できますか、できる場合はどうすればよいですか?
私が最近投稿した別の質問によると、Classic ASP は、activeX オブジェクトがスローする可能性のあるイベントを処理できない可能性があるようです。
誰でもこれを確認できますか、できる場合はどうすればよいですか?
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 イベントを使用している場合、このアプローチは適用されません。
あなたは正しい ASP はイベントを処理できません。CreateObject
スクリプト関数をイベントに接続するために必要な署名も、<script FOR
クライアント側で使用する可能性のある構文もサポートしていません。