投稿日 | : 2006/12/21(Thu) 19:15 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: VB6.0でのバイナリデータの渡し方について |
> Call HogeIF.HogeMethod(ByteArr) // バイト配列を引数とするメソッド・・・☆
「'」では無く「//」になっている所に苦笑い…。(^-^;
> メソッドの引数としてバイト配列を取る
COM メソッドの引数定義が『ByRef foo() As Byte』になっていますか?
VB6 は、『ByVal foo() As Byte』を処理できませんので。
とりあえず、サンプルという事で。
# あえてゴテゴテと属性を付けまくってみる。
---------
using System;
using System.Runtime.InteropServices;
namespace HogeHogeDLL
{
/// <summary/>
[Guid("F902FEDF-8146-469a-BF2E-FF03596F2901")]
public interface IHogehoge
{
void HogeMethod(
[MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UI1)]
ref byte[] array);
}
/// <summary>ほげほげ</summary>
[Guid("D3C4768C-E007-4029-9D21-DF5A77C53E29")]
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("HogeHogeDLL.Hogehoge.1")]
public class Hogehoge : IHogehoge
{
/// <summary>配列の各要素を、それぞれ倍の値にします。</summary>
/// <param name="array">byteの1次元配列</param>
public void HogeMethod(ref byte[] array)
{
if (array == null)
{
array = new byte[0];
}
for (int i = 0; i < array.Length; i++)
{
unchecked { array[i] *= 2; }
}
}
}
}