최근에 게시 한 다른 질문에서 Classic ASP가 activeX 객체가 발생시키는 이벤트를 처리하지 못할 수도 있습니다.Classic ASP의 activeX 객체에서 이벤트를 처리 할 수 있습니까
누구나이를 확인할 수 있습니까? 그렇지 않으면 어떻게 할 수 있습니까?
최근에 게시 한 다른 질문에서 Classic ASP가 activeX 객체가 발생시키는 이벤트를 처리하지 못할 수도 있습니다.Classic ASP의 activeX 객체에서 이벤트를 처리 할 수 있습니까
누구나이를 확인할 수 있습니까? 그렇지 않으면 어떻게 할 수 있습니까?
은 가능한 클래식 ASP에서 ActiveX 객체에서 이벤트를 처리하는 것입니다
아니, 당신은 COM 이벤트에 대해 말하기 경우.
하지만 "이벤트"라는 단어가 의미하는 바에 따라 대답은 "어쩌면"입니다.
그것은하는 COM 클래스/액티브 일을 만들 JScript를/클래식 ASP에서 인스턴스화하고 COM 클래스는 ASP 페이지에 정의 된 콜백을 호출해야하는 것이 가능 Create COM/ActiveXObject in C#, use from JScript, with simple event
를 참조하십시오. 이것은 COM 이벤트를 통해 수행되지는 않지만 요구 사항을 충족시킬 수 있습니다.
이<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 클래스를 설정할 수있는 속성을 노출하는 경우에만 작동 한 다음 해당 속성의 "기본 방법"을 호출 : 같은
ASP 코드를 볼 수 있습니다. 대로 FireEvent이 같은 곳
public partial class Greet : IGreet
{
public Object onHello { get; set; }
public String Hello(string name)
{
var r = FireEvent();
return "Why, Hello, " + name + "!!!" + r;
}
}
... :이처럼
은 분명히
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
구문을 지원하지 않습니다.
브릴리언트 - 내가 뭘 찾고 있었는지 - 고마워요. – Graham
거의 거기 - 관련 문제가 있습니다 - 제 C# 지식은 제로 옆에 있습니다. 당신이 언급 한 다른 대답에 코드를 적용했으며 C# 이벤트 처리에 대한 이해가 부족하다는 점을 저를 용납하지 않을 것이라고 생각합니다. FireEvent를 다음과 같이 호출합니다. WebClient request = new WebClient(); request.DownloadDataCompleted + = 새 DownloadDataCompletedEventHandler (FireEvent); 공공 무효대로 FireEvent (개체 보낸 사람, DownloadDataCompletedEventArgs 전자) 그것은 잘 컴파일 가, 난 그냥 (ASP x.onDownloadComplete = 함수() {Response.Write에있는 이벤트를 잡을 수 없습니다 나는과 같이 방법을 변경 한 "YEE HA"))} – Graham
다른 질문을 게시해야 할 수도 있습니다. 이 새로운 트위스트가 덧글 대화에서하기 어려운 몇 가지 추가 설명이 필요할 것으로 보입니다. – Cheeso