2012-06-22 2 views

답변

1

은 가능한 클래식 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 이벤트를 사용하는 경우,이 방식은 적용되지 않습니다 .

+0

브릴리언트 - 내가 뭘 찾고 있었는지 - 고마워요. – Graham

+0

거의 거기 - 관련 문제가 있습니다 - 제 C# 지식은 제로 옆에 있습니다. 당신이 언급 한 다른 대답에 코드를 적용했으며 C# 이벤트 처리에 대한 이해가 부족하다는 점을 저를 용납하지 않을 것이라고 생각합니다. FireEvent를 다음과 같이 호출합니다. WebClient request = new WebClient(); request.DownloadDataCompleted + = 새 DownloadDataCompletedEventHandler (FireEvent); 공공 무효대로 FireEvent (개체 보낸 사람, DownloadDataCompletedEventArgs 전자) 그것은 잘 컴파일 가, 난 그냥 (ASP x.onDownloadComplete = 함수() {Response.Write에있는 이벤트를 잡을 수 없습니다 나는과 같이 방법을 변경 한 "YEE HA"))} – Graham

+0

다른 질문을 게시해야 할 수도 있습니다. 이 새로운 트위스트가 덧글 대화에서하기 어려운 몇 가지 추가 설명이 필요할 것으로 보입니다. – Cheeso

1

올바른 ASP가 이벤트를 처리 할 수 ​​없습니다. 스크립트 기능을 이벤트에 연결하는 데 필요한 CreateObject 서명이 없으며 클라이언트 측에서 사용할 수있는 <script FOR 구문을 지원하지 않습니다.

관련 문제