调用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相关推荐

  1. C#双面打印解决方法(打印word\excel\图片)

    最近需要按顺序打印word.excel.图片,其中有的需要单面打印,有的双面.网上查了很多方法.主要集中在几个方式解决 1.word的print和excel的printout里设置单双面 2.prin ...

  2. CSharpGL(36)通用的非托管数组排序方法

    CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray< ...

  3. windows 仍在设置此设备的类配置。 (代码 56)_谷歌发布Flutter Alpha:支持Windows

    老孟导读:Windows来了,Mac.Linux.Web还远吗? 本文翻译自https://medium.com/flutter/announcing-flutter-windows-alpha-33 ...

  4. 在服务中创建用户进程的方法(C#版)

    Windows NT/2000提供了一个函数CreateProcessAsUser,它的功能类似于CreateProcess函数,所不同的是CreateProcessAsUser创建的新进程能以用户( ...

  5. github windows系统监控_谷歌发布Flutter Alpha:支持Windows

    老孟导读:Windows来了,Mac.Linux.Web还远吗? 本文翻译自https://medium.com/flutter/announcing-flutter-windows-alpha-33 ...

  6. 双面打印无效选择了文件服务器,使用高级选项打印(纸盘选择,双面打印,装订)...

    如果其他人需要它,我想出了一个解决方法,基于将打印机设置内存块存储在二进制文件中,然后恢复它 . 这个想法在this blog post中有描述,但是当它只是复制粘贴时它对我不起作用(它仅适用于某些驱 ...

  7. 谷歌发布Flutter Alpha:支持Windows

    老孟导读:Windows来了,Mac.Linux.Web还远吗? 本文翻译自https://medium.com/flutter/announcing-flutter-windows-alpha-33 ...

  8. 开始使用 Flutter 构建 Windows 桌面应用吧!

    作者 / Chris Sells, Product Manager, Flutter developer experience 我们的使命是为开发者提供一个开源的高效框架,帮助他们在任何平台上构建美观 ...

  9. 连续声音采集最好版本(c#),把书读薄了

    为了识别一个短元音,比如,啊(a),钨(u),诸如此类,抄来了别人的声音采集程序,visual c++和c#两个版本,在采集短元音的过程中,发现,c#版本不如c++版本好,一直未找到原因,耿耿于怀(人 ...

最新文章

  1. execel公式 java工具,MyExcel(Excel Java工具包) v3.0.0下载
  2. printf 格式输出代码大全
  3. HDU-2159 FATE 二维背包
  4. Excel表Ctrl+v和Ctrl shift+v有什么区别_Ctrl键与10个数字键,26个字母键的组合应用技巧解读...
  5. 生产环境Go程序内存泄露,用pprof如何快速定位
  6. python接收最新邮件_Python接收Gmail新邮件并发送到gtalk的方法
  7. 第3节:vue-router如何参数传递
  8. mysql入侵服务器_记通过mysql数据库成功入侵到服务器内部的渗透实战
  9. 超级邮件群发代理服务器设置,超级邮件群发教程
  10. 51 个漂亮的电子商务网站设计分享
  11. 微信小程序开发基础知识2(黑马)
  12. 唧唧DOWN闪退的原因
  13. Db2 purescale环境db2start因为缺少TSAMP license报错:SQL1677N
  14. 使用国密算法签名PDF文件
  15. Pushing Daisies 第一季第1集学习笔记
  16. 《Linux Kernel Development》读书笔记
  17. linux基础01-ip与网卡
  18. ASP.NET+SQL网上校友录设计与实现
  19. 扩展欧几里得算法求逆元---乘法密码
  20. Servlet邮件发送

热门文章

  1. SQL - 创建一个学生表,要求有主键约束和非空约束
  2. Mac 上开启一个简单的服务器
  3. 利用路由器端口映射远程连接
  4. .NET Oracle连接方法
  5. 优化基于ExtJS 4.1的应用
  6. win7、offcie 2010是否激活查看方法
  7. 分享几个益智题......看你能做对吗?
  8. Python学习笔记简单数据类型之数字
  9. Struts2中动态的指定返回的结果集
  10. Java中不常见的关键字 / 修饰符(volatile , native , transient)