博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
How to pass in/out return VB Byte array from a COM Component written in C#
阅读量:6630 次
发布时间:2019-06-25

本文共 809 字,大约阅读时间需要 2 分钟。

看到dudu分享的贴代码方法立刻就来试验一下,效果的确很好可惜我机器上只有Office XP,所以没有颜色了。

至于这段snippet嘛,使用来示范如何在VB6中调用一个.NET写的COM组件,并传入、传出以及返回一个ByteArray的。
其实写出来的代码很简单的,但当刚开始确实十分麻烦,因为我找不到.NET中对应的Attribute(主要是InAttribute, OutAttribute ,对应关键字in, out,ref和IDL定义间的关系。
我现在想想[return:MarshalAs()]这个属性可能也不需要加的。你可以试一试告诉我结果tongue_smile.gif
using System;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

using System.Runtime.InteropServices;

 

namespace expose_to_COM

{

     public interface IInfo

     {

 

         [

              return: MarshalAs(UnmanagedType.SafeArray)

         ]

         byte[] GetBytes(ref byte[] bytes);

     }

 

     [ClassInterface(ClassInterfaceType.None)]

     public class Class1: IInfo

     {

         public Class1()

         {

         }

 

         public byte[] GetBytes(ref byte[] bytes)

         {

              byte[] _bytes = new byte[]{0x30,0x31,0x32,0x00};

              return _bytes;

         }

     }

}

 

 

转载于:https://www.cnblogs.com/jonnyyu/archive/2004/02/19/1361.html

你可能感兴趣的文章
无效的过程调用或参数: 'Instr'解决方法
查看>>
python笔记第十天 模块
查看>>
[CF845G]Shortest Path Problem?
查看>>
Ubuntu 使用163镜像(12.10)
查看>>
SSM框架中使用文件上传的示例
查看>>
js_高级_函数进阶
查看>>
java中小工具————UUID
查看>>
iOS开发小技巧--利用运行时得到隐藏的成员变量
查看>>
Lync 小技巧-32-无TMG-internet-Lync 2013 For iPhone如何做
查看>>
又晚睡了...
查看>>
技术的学习
查看>>
Oracle select 中case 的使用以及使用decode替换case
查看>>
[Android Memory] Android Zipalign zip对齐优化app程序
查看>>
[LeetCode] Factorial Trailing Zeroes 求阶乘末尾零的个数
查看>>
JVM实用参数(八)GC日志
查看>>
Web常见安全漏洞原理及防范-学习笔记
查看>>
yield next和yield* next的区别
查看>>
JAVASCRIPT
查看>>
python-django
查看>>
Java实现二叉树及相关遍历方式
查看>>