none
JscriptからC#で作成したCOMオブジェクトのイベントについて RRS feed

  • 質問

  • みなさんこんにちわ

    今、C#でCOMを作成し、それをJScriptから
    var com =new ActiveXObject("comtest.Class1");
    でオブジェクトを作成しています。
    JScriptからCOMのメソッド(testメソッド)は
    com.test()
    で呼び出す事ができたのですが、

    逆にCOMからJScriptへのイベントの通知をどのように行えば
    よいかわかりません。
    COMはテスト用として以下のようなソースを書きました。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;

    namespace comtest
    {
        public delegate void Eventtest();
        /// <summary>
        /// comを公開するためのinterface
        /// </summary>
        [Guid("A6784526-7408-4BF5-B02E-17158FE30DA3")]
        [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
        public interface PersonEvents
        {
            [DispId(1)]
            //void eventtest(object sender, EventArgs e);
            void eventtest();
        }

        /// <summary>
        ///
        /// </summary>
        [ComSourceInterfaces("comtest.PersonEvents,comtest")]
        public class Class1
        {
             
            public event Eventtest eventtest;

            public void handler()
            {
                   //何もしない
            }
            

            //テスト用メソッドこれが呼ばれるとイベントが発生する。
            public void test()
            {
                 eventtest();
            }

        }
    }

     

    このC#のソース内のeventtestに対してJScriptのメソッドをどう関連つければ
    COMからイベントを通知できるのでしょうか?。
    よろしくお願いします。


     

    2006年11月13日 4:55

すべての返信

  • かなり前の質問のようですが、
    久し振りにフォーラムを見て、気になったので、リプライをつけておきます

    eventtestイベントのハンドリングはこんな感じでできます。

    var com =new ActiveXObject("comtest.Class1");
    comAttachEvent(com);

    function comAttachEvent(com)
    {
      function com::eventtest()
      {
        alert('fire');

      }

    }


     

    2007年1月27日 23:57