2009-08-03 12 views
0

私はc#を使って小さなアクティブなコントロールを構築しました。私はバイト配列を返す関数を持っています。何らかの理由から、jsで返された配列をconsueしようとすると、私は未定義の値を受け取ります。なぜこれは起こっているのですか?とにかくそれを解決するにはありますか?アクティブ配列からjavascriptにバイト配列を返す

のActiveX:

[ComVisible(true)] 
     public byte[] Close() 
     { 
      try 
      { 
       MessageBox.Show("called from activex Close"); 
       return Stop(); 
      } 
      catch (Exception e) 
      { 
       //ExceptionHandling.AppException(e); 
       throw e; 
      } 
     } 

JavaScript呼び出し:

function CloseActiveX(){ 
var myRslt = document.OurActiveX.Close(); 
} 
+0

動作しないコードを追加できますか? – Freddy

答えて

1

あなたがストップ()メソッドが含まれているものを示していない

は、ここに私のコードの簡単なデモです。 Stop()がnullを返す場合は、あなたが見ているものが見えるはずです。

しかし、それはあなたのActiveXコントロールが.NETで書かれているようです。これは無数の理由のために悪い考えであり、パフォーマンスの低下は最低限であり、フレームワークの異なるバージョンが必要なブラウザ内で実行されている他のコントロールや拡張機能があると問題が発生します。

この問題以外にも、おそらく、byte[]が発信者にマーシャリングされて使用できないという問題があります。 ARRAY、BYREF、U1というプロパティを持つVARIANTを返す必要があります。

Default Marshaling for Arraysが有用です。

関連する問題