.net IntPtr ==interoperable pointer
调用system.runtime.interopservice,可以用dllimport;
API函数主要在“kernel32.dll”、“user32.dll”、“GDI32.dll”,
kernel32.dll,以调用它下面的LoadLibrary、GetProcAddress、FreeLibrary。查MSDN了解了三个函数的原型为:
HMODULE LoadLibrary(LPCTSTR lpFileName);
FARPROC GetProcAddress(HMODULE hModule, LPCWSTR lpProcName);
BOOL FreeLibrary(HMODULE hModule);
LoadLibrary需要的参数为要调用的DLL文件的名字,而它的返回值为这个DLL文件的句柄;
GetProcAddress需要的参数一个为要调用的DLL的句柄,这个值
由LoadLibrary的返回值提供,另一个参数为要调用该DLL文件中函数的名字。它的返回值为函数的指针;
FreeLibrary需要的参数为调用的函数DLL文件的句柄,返回值为布尔型。
note:查看api函数可使用vs的 dumpbin.exe
简单来讲,IntPtr是一个Struct类型的指针的wrapper结构,是不同编程语言之间类型转换的处理代理。
Marshal:中译空军司令,是远程对象的管理类,有各种操作可供选择。
//字符串参数为IntPtr
[DllImport("user32.dll")]
public static extern int MessageBox(int hWnd, IntPtr text, IntPtr caption, uint type);void Main()
{//字符串var str = "hehe";//在非托管堆中创建指针var ptr = Marshal.StringToHGlobalAnsi(str);//平台调用MessageBoxA interactive pointer==intptr,uint 1,2,messagebox type;MessageBox(0, ptr, IntPtr.Zero, 2);//清理Marshal.FreeHGlobal(ptr);
}// Define other methods and classes here
转载于:https://www.cnblogs.com/hualiu0/p/5079580.html
.net IntPtr ==interoperable pointer相关推荐
- C#双面打印解决方法(打印word\excel\图片)
最近需要按顺序打印word.excel.图片,其中有的需要单面打印,有的双面.网上查了很多方法.主要集中在几个方式解决 1.word的print和excel的printout里设置单双面 2.prin ...
- CSharpGL(36)通用的非托管数组排序方法
CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray< ...
- windows 仍在设置此设备的类配置。 (代码 56)_谷歌发布Flutter Alpha:支持Windows
老孟导读:Windows来了,Mac.Linux.Web还远吗? 本文翻译自https://medium.com/flutter/announcing-flutter-windows-alpha-33 ...
- 在服务中创建用户进程的方法(C#版)
Windows NT/2000提供了一个函数CreateProcessAsUser,它的功能类似于CreateProcess函数,所不同的是CreateProcessAsUser创建的新进程能以用户( ...
- github windows系统监控_谷歌发布Flutter Alpha:支持Windows
老孟导读:Windows来了,Mac.Linux.Web还远吗? 本文翻译自https://medium.com/flutter/announcing-flutter-windows-alpha-33 ...
- 双面打印无效选择了文件服务器,使用高级选项打印(纸盘选择,双面打印,装订)...
如果其他人需要它,我想出了一个解决方法,基于将打印机设置内存块存储在二进制文件中,然后恢复它 . 这个想法在this blog post中有描述,但是当它只是复制粘贴时它对我不起作用(它仅适用于某些驱 ...
- 谷歌发布Flutter Alpha:支持Windows
老孟导读:Windows来了,Mac.Linux.Web还远吗? 本文翻译自https://medium.com/flutter/announcing-flutter-windows-alpha-33 ...
- 开始使用 Flutter 构建 Windows 桌面应用吧!
作者 / Chris Sells, Product Manager, Flutter developer experience 我们的使命是为开发者提供一个开源的高效框架,帮助他们在任何平台上构建美观 ...
- 连续声音采集最好版本(c#),把书读薄了
为了识别一个短元音,比如,啊(a),钨(u),诸如此类,抄来了别人的声音采集程序,visual c++和c#两个版本,在采集短元音的过程中,发现,c#版本不如c++版本好,一直未找到原因,耿耿于怀(人 ...
最新文章
- execel公式 java工具,MyExcel(Excel Java工具包) v3.0.0下载
- printf 格式输出代码大全
- HDU-2159 FATE 二维背包
- Excel表Ctrl+v和Ctrl shift+v有什么区别_Ctrl键与10个数字键,26个字母键的组合应用技巧解读...
- 生产环境Go程序内存泄露,用pprof如何快速定位
- python接收最新邮件_Python接收Gmail新邮件并发送到gtalk的方法
- 第3节:vue-router如何参数传递
- mysql入侵服务器_记通过mysql数据库成功入侵到服务器内部的渗透实战
- 超级邮件群发代理服务器设置,超级邮件群发教程
- 51 个漂亮的电子商务网站设计分享
- 微信小程序开发基础知识2(黑马)
- 唧唧DOWN闪退的原因
- Db2 purescale环境db2start因为缺少TSAMP license报错:SQL1677N
- 使用国密算法签名PDF文件
- Pushing Daisies 第一季第1集学习笔记
- 《Linux Kernel Development》读书笔记
- linux基础01-ip与网卡
- ASP.NET+SQL网上校友录设计与实现
- 扩展欧几里得算法求逆元---乘法密码
- Servlet邮件发送
热门文章
- SQL - 创建一个学生表,要求有主键约束和非空约束
- Mac 上开启一个简单的服务器
- 利用路由器端口映射远程连接
- .NET Oracle连接方法
- 优化基于ExtJS 4.1的应用
- win7、offcie 2010是否激活查看方法
- 分享几个益智题......看你能做对吗?
- Python学习笔记简单数据类型之数字
- Struts2中动态的指定返回的结果集
- Java中不常见的关键字 / 修饰符(volatile , native , transient)