【转】MarshalAs属性和使用】的更多相关文章

转载地址:http://blog.sina.com.cn/s/blog_4e4ee8ed0100elou.html [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] MarshalAs属性指示如何在托管代码和非托管代码之间封送数据. 当 MarshalAsAttribute.Value 设置为 ByValArray 时,必须设置 SizeConst 以指示数组中的元素数.当需要区分字符串类型时,ArraySubType 字段可以选择包含数组…
http://blog.csdn.net/tianyu0910/article/details/6260755 http://blog.sina.com.cn/s/blog_4e4ee8ed0100elou.html…
typedef struct Point{ unsigned short x; unsigned short y; }mPoint;//点坐标 typedef struct Line{ mPoint p[2]; unsigned char name[20]; unsigned int mark[5]; }mLine; //线坐标 如上一个C++的结构体Line,分别有3个数组 结构体数组 字节数组 int数组 简单翻译成C#如下: public struct Point{ public usho…
看了P/Invoke技术的介绍,于是想写下点东西,东西包含两个部分:知识的纪录和我的理解及疑问. r托管代码中调用非托管API函数的过程 1.定位包含API的DLL: 2.载入DLL 3.找到DLL中想要的那个API,然后把参数压入栈中.排列数据(排列数据是什么意思?数据封送) 4.把执行权限从托管代码中转移到非托管代码中() 对Dll中的函数进行一些说明,以能调用 DllImport特性来说明函数,有一些特殊的作用,比如换掉API的原来名字,见DLLImport特性. 非托管函数和托管方法中数…
Pchar是非托管代码,要在.net中调用Delphi dll中的功能,请使用MarshalAs属性告知.net调用PInvoke去转换.net中标准的string类型.如果Delphi dll是Delphi2007以前的版本编译的,则Pchar是Ansi类型:如果Delphi dll是Delphi2009以后的版本编译的,则Pchar是Unicode类型.请看以下实例. Ansi类型: [DllImport("my.dll")] [return: MarshalAs(Unmanage…
使用C#调用windows API(从其它地方总结来的,以备查询) C#调用windows API也可以叫做C#如何直接调用非托管代码,通常有2种方法: 1.  直接调用从 DLL 导出的函数. 2.  调用 COM 对象上的接口方法 我主要讨论从dll中导出函数,基本步骤如下: 1.使用 C# 关键字 static 和 extern 声明方法. 2.将 DllImport 属性附加到该方法.DllImport 属性允许您指定包含该方法的 DLL 的名称. 3.如果需要,为方法的参数和返回值指定…
一.系统空闲时间判断 需要一个自动登录注销的功能,当鼠标移动和或者键盘输入的时候认为当前用户在线,否则过了设置时间就自动退出.好在前辈们留下了这样的一个类: MouseKeyBoardOperate: using System; using System.Runtime.InteropServices; namespace SCADA.RTDB.Framework.Helpers { /// <summary> /// Class MouseKeyBoardOperate /// </s…
这章中描述的属性被用在创建和COM程序交互的程序中. 1.1  COMImport 属性 当被放在一个类上, COMImport 属性就把这个类标记为一个外部实现的COM 类.这样的一个类声明使得可以用一个C# 名称调用一个COM 类. namespace System.Runtime.InteropServices { [AttributeUsage(AttributeTargets.Class)] public class COMImportAttribute: System.Attribu…
第一节 接口慨述 接口(interface)用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).接口可以从多个基接口继承,而类或结构可以实现多个接口.接口可以包含方法.属性.事件和索引器.接口本身不提供它所定义的成员的实现.接口只指定实现该接口的类或接口必须提供的成员. 接口好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用.接口不能被实例化.类可以实现多个接口并且通过这些实现的接口被索引.…
一:入门,直接从 C# 调用 DLL 导出   其实我们的议题应该叫做C#如何直接调用非托管代码,通常有2种方法: 1.  直接调用从 DLL 导出的函数. 2.  调用 COM 对象上的接口方法 我主要讨论从dll中导出函数,基本步骤如下: 1.使用 C# 关键字 static 和 extern 声明方法. 2.将 DllImport 属性附加到该方法.DllImport 属性允许您指定包含该方法的 DLL 的名称. 3.如果需要,为方法的参数和返回值指定自定义封送处理信息,这将重写 .NET…
问题: 当我用 [DllImport("*.dll", EntryPoint = "*",CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)] 调用外部dll文件做身份证读卡的时候,出现如图的错误 令我很是意外,查其原因: 托管代码与非托管代码之间的相互调用,数据交换的问题. 那么问题来了,什么是托管代码,什么是非托管代码? 经百度得知,托管代码指的是必须依靠.NET框架…
一.类型转化 下面重点罗列下常用的类型转化. C++类型 C#类型 备注说明 Int Int16.Int32 没有悬念,直接转化 Uint UInt16.Uint32.int 在程序中,不太清楚是,就可以直接对应为int Long Int32 Long相对int就定型了,对应的就是Int32 DWORD(unsigned long) Uint32 WORD(unsigned short) Uint16 这是对WORD的认知. Byte(Unsigned char) Byte 在 DECIMAL…
当想到所有文件都转换为 XML时,确实是一件好事.但是,这并非事实.仍旧还有大量的文件格式不是XML,甚至也不是ASCII.二进制文件仍然在网络中传播,储存在磁盘上,在应用程序之间传递.相比之下,在处理这些问题方面,它们比文本文件显得更有效率些. 在 C 和 C++ 中,读取二进制文件还是很容易的.除了一些开始符(carriage return)和结束符(line feed)的问题,每一个读到C/C++中的文件都是二进制文件.事实上,C/C++ 只知道二进制文件,以及如何让二进制文件像文本文件一…
C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows® 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大.他们没有足够的资源为所有 Win32 API 编写托管接口.加以测试并编写文档,因此只能优先处理最重要的部分.许多常用操作都有托管接口,但是还有许多完整的 Win32 部分没有托管接口. 平台调用 (…
C#如何直接调用非托管代码,通常有2种方法: 1.  直接调用从 DLL 导出的函数. 2.  调用 COM 对象上的接口方法 我主要讨论从dll中导出函数,基本步骤如下: 1.使用 C# 关键字 static 和 extern 声明方法. 2.将 DllImport 属性附加到该方法.DllImport 属性允许您指定包含该方法的DLL 的名称. 3.如果需要,为方法的参数和返回值指定自定义封送处理信息,这将重写 .NET Framework 的默认封送处理. 好,我们开始 1.首先我们查询M…
http://blog.163.com/j_yd168/blog/static/496797282008611326218/     C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大.他们没有足够的资源为所有 Win32 API 编写托管接口.加以测试…
C# 代码有以下两种可以直接调用非托管代码的方法: 直接调用从 DLL 导出的函数. 调用 COM 对象上的接口方法. 对于这两种技术,都必须向 C# 编译器提供非托管函数的声明,并且还可能需要向 C# 编译器提供如何封送与非托管代码之间传递的参数和返回值的说明. 直接从 C# 调用 DLL 导出 默认封送处理和为非托管方法的参数指定自定义封送处理 为用户定义的结构指定自定义封送处理 注册回调方法 直接从 C# 调用 DLL 导出 要声明一个方法使其具有来自 DLL 导出的实现,请执行下列操作:…
最近完成了一个C++版本的对外sdk程序,其中有部分回调函数使用. C++程序使用时没有异常,但是在C#环境下使用时出了点问题,简单总结下. 感谢博客:http://blog.csdn.net/songjinshi/article/details/8153635 帮助我解决了问题. C++中的回调函数原型如下: typedef void (STDCALL *fCallback)(const char* csDetail, void *pUser); 其中有一个参数是char * ,就是字符指针,…
C#中不仅支持.Net 平台,而且支持COM平台.为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性.一个属性实际上就是一个 C# 类,它通过修饰源代码来提供元信息.属性使 C# 能够支持特定的技术,如 COM 和 .Net,而不会干扰语言规范本身.C# 提供将COM接口转换为 C#接口的属性类.另一些属性类将 COM类转换为C# 类.执行这些转换不需要任何 IDL 或类工厂. 现在部署的任何COM 组件都可以在接口转换中使用.通常情况下,所需的调整是完全自动进行的. 特别是,可以…
使用C#调用windows API入门 一:入门,直接从 C# 调用 DLL 导出   其实我们的议题应该叫做C#如何直接调用非托管代码,通常有2种方法: 1.  直接调用从 DLL 导出的函数. 2.  调用 COM 对象上的接口方法 我主要讨论从dll中导出函数,基本步骤如下: 1.使用 C# 关键字 static 和 extern 声明方法. 2.将 DllImport 属性附加到该方法.DllImport 属性允许您指定包含该方法的 DLL 的名称. 3.如果需要,为方法的参数和返回值指…

jqu

1 /*2 * 说明:3 * 本源代码的中文注释乃Auscarlin呕心沥血所作.旨在促进jQuery的传播以及向广大jQuery爱好者提供一个进阶4 *的途径,以让各位更加深入地了解jQuery,学习其中有用的技术,从而为振兴中华JS出一份绵薄之力...(说大了...)5 *6 *本文件保留了jQuery代码原来的英文注释,个别语句我在其旁列出了尝试性的翻译(并标明这是翻译).水平有限希望读者能斟酌.7 *另外,本中文注释不是简单将原文翻译(jQuery作者那少得可怜的注释根本不足以让我们读通…
修改后的代码:github 一.调用windows自身摄像头属性设置窗口 使用VideoCaptureDevice对象的DisplayPropertyPage(IntPtr parentWindow)方法即可,以下是从Aforge源码里找到的调用api方式: /// <summary> /// Invokes a new property frame, that is, a property sheet dialog box. /// </summary> /// /// <…
本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klass.count++; console.log(obj.count);//undefined console.log(klass.count);//1 静态属性存在于对象中.它的访问方式只有:类名.count 一种方式,无法通过实例访问. 如:Math.PI 原型属性: 在讲解原型属性之前有必要先提一…
一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开发中也是没有认真的去研究,至于使用copy还是用strong完全是根据心情随性而为,也一直没有出什么问题.可苹果竟然分了两个关键字,就肯定有其用意,为了提高自己还是要仔细的搞清楚其中之差别!好了,废话说完进入正题. 二.对象属性描述copy与strong的区别 直接上代码: ``` @propert…
本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素.块级元素的布局. 3. CSS display属性:介绍此属性对布局的影响. 1. HTML元素分类 HTML元素大题可分为内联(inline)元素和块(block)元素. 1.1 内联元素(inline) ①元素显示方式:"文本方式",1个挨着1个,不独自占有1行: ②内嵌的元素也必须是…
本篇主要介绍float属性:定义元素朝哪个方向浮动. 目录: 1. 页面布局方式:介绍文档流.浮动层以及float属性. 2. float:left :介绍float为 left 时的布局方式. 3. float:right :介绍float为 right 时的布局方式. 4. 相邻元素含有float属性:介绍相邻元素含有float属性时的布局方式. 1. 页面布局方式 页面布局方式,主要包含:文档流.浮动层.float属性. 1.1 文档流 HTML页面的标准文档流(默认布局)是:从上到下,从…
本篇文章主要介绍元素的Position属性,此属性可以设置元素在页面的定位方式. 目录 1. 介绍 position:介绍position的值以及辅助属性. 2. position 定位方式:介绍position的四种定位方式:绝对.相对.固定.默认. 3. 总结 position:以示例的方式展示position. 1. 介绍 1.1 说明 Position 属性:规定元素的定位类型.即元素脱离文档流的布局,在页面的任意位置显示. 1.2 主要的值 ①absolute :绝对定位:脱离文档流的…
概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过npm-config来生成. name package.json中最重要的属性是name和version两个属性,这两个属性是必须要有的,否则模块就无法被安装,这两个属性一起形成了一个npm模块的唯一标识符.模块中内容变更的同时,模块版本也应该一起变化. name属性就是你的模块名称,下面是一些命名规则…
最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相应示例代码. 一.DOM特性和DOM属性 attribute(特性),是我们赋予某个事物的特质或对象,attribute是HTML标签上的特性,它的值只能够是字符串 property(属性),是早已存在的不需要外界赋予的特质,property是DOM中的属性,是JavaScript里的对象 在访问元素特性值时…
前日,一小伙伴问我一个问题,说它解决了半天都没解决这个问题,截图如下: 大概楼主理解如下: 如果在应用中有一个判断wifi的开关和一个当前音量大小的seekbar以及一个获取当前电量多少的按钮,想知道如果按home键后调整了wifi开关信息以及媒体音量信息,再切换到前台UI如何才会实时刷新.其实这个问题不难解决,如果你了解activity的生命周期,只需要把设置开关和seekbar的信息放在onResume中就好了,因为无论是锁屏后打开或者是切换后台再前台都是会调用onResume的.但不由得滋…