使用PInvoke.NET插件为托管代码添加Win32 API签名
PInvoke.NET是一个wiki,用于建立正确的P/Invoke签名。wiki是一种任何人都可进行编辑的协作式网站,因此可以在那里找到数以千计的与使用P/Invoke相关的签名、示例和笔记。既然wiki可被任何人编辑,你也可以在使用这些信息的同时分享自己的经验。
显然这个wiki及其包含的信息很有价值,而PInvoke.NET Visual Studio插件则使其更具价值。在下载、安装PInvoke.NET插件后,你就可以在Visual Studio内搜索需要的签名或向其添加新的内容。在VS内的代码文件内点击右键,会看到有两个新的菜单项:Insert PInvoke Signatures和Contribute PInvoke Signatures and Types。
选择Insert PInvoke Signatures来插入一个新的PInvoke签名,这时会看到:
使用这个简单的对话框,你可以搜索需要调用的函数。还有一个可选项,你可以包含该函数所在的模块。现在,应用程序的一个基本的能力是让计算机发出蜂鸣声。那么需要搜索一下Beep函数,看看它会出现什么。如果如下:
在结果中会显示该函数用法的信息(Beep函数的信息是"Generates simple tones on the speaker")。你可以看到供C#和VB.NET使用的签名。注意下面的文字Alternative Managed API,它给出了一个建议,告诉你.NET Framework 2.0中的System.Console.Beep方法具有相同功能(最好还是使用托管代码)。
对话框的底部还有一个链接,它会把你带向wiki中Beep方法的相应页面,这个页面包含了该方法的各个参数的相关文档以及一些代码示例。
在选择了要插入的签名后,点击Insert按钮,该签名就被添加到代码中了。在Beep的示例中是这样的:
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool Beep(uint dwFreq, uint dwDuration);
大功告成!现在就可以在代码中调用该方法了:
PInvoke.NET wiki和Visual Studio插件为开发人员减少了很多痛苦,也节省了大量时间。wiki可以通过www.pinvoke.net访问,在该页面的左下角的Helpful Tools链接中可以找到该插件的下载。
PS:据说Beep函数还具有驱蚊之功效,不过需要知道相应的频率来设置第一个参数:)
By Anders
本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2007/01/13/pinvokeaddin.html,如需转载请自行联系原作者。
使用PInvoke.NET插件为托管代码添加Win32 API签名相关推荐
- via浏览器如何使用插件 Via浏览器添加使用插件教程
1.尽管Via浏览器的体积小巧,但其中提供的功能可谓是五脏俱全,而想要体验更多服务的话,就需要去安装插件了,这需要大家点击右上角的横杠选项,并且从列表里选择"设置"功能. via浏 ...
- Visual Studio中使用Macros插件给代码添加注释、时间和以及自动脚本
title: Visual Studio中使用Macros插件给代码添加注释.时间和以及自动脚本 date: 2020-09-11 sidebarDepth: 2 tags: 代码 Visual st ...
- Ionic初学之Ionic3(Cordova)插件制作与添加
现在制作APP都流行混合开发,Ionic是个不错的选择,但是很多原生的功能,混合开发是无法实现的,这时候就要根据功能来制作Cordova插件来实现,下面就记录第一次制作Cordova插件的步骤和遇到的 ...
- 揭示Win32 API拦截细节/API hooking revealed (1)
原文出处:http://www.codeproject.com/system/hooksys.asp 简要介绍 拦截win32 API 调用对于多数windows开发人员来说都一直是很有挑战性的课题, ...
- 揭示win32 api拦截细节
转自啊D 原文出处:http://www.codeproject.com/system/hooksys.asp 拦截win32 API 调用对于多数windows开发人员来说都一直是很有挑战性 ...
- MSIL 教程(二):数组、分支、循环、使用不安全代码和如何调用Win32 API(转)...
转自:http://www.cnblogs.com/Yahong111/archive/2007/08/16/857574.html 续上文[翻译]MSIL 教程(一) ,本文继续讲解数组.分支.循环 ...
- java 调用win32 api 学习总结
java使用JInvoke调用windows API 使用jinvoke调用windowsAPI.jna使用比较麻烦,需要写c代码和参数转换,jinvoke的使用就像jdk中的包一样. 官网使用参考: ...
- ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析
ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析 . / // datadase odbc1.cpp : 定义应用程序的入口点. // #inc ...
- 在C#程序设计中使用Win32 API
C# 用户经常提出两个问题:"我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?"当框架小组构建他们的 .NET 部分 ...
- 深入浅出VC++串口编程--基于Win32 API
1.API描述 在WIN32 API中,串口使用文件方式进行访问,其操作的API基本上与文件操作的API一致. 打开串口 Win32 中用于打开串口的API 函数为CreateFile,其原型为: H ...
最新文章
- 为什么方差的自由度是n-1啦?
- Error dialog box generic entry point
- 容器编排技术 -- 在Azure上使用CoreOS和Weave的 Kubernetes
- php判断手机是安卓系统还是ios系统
- [deviceone开发]-大家比较关注的应用内部升级
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_4_练习_递归打印多级目录...
- 计算机科学与技术的班会,计算机科学与技术学院2014级信管三班班会
- 如何进行cad地理配准_地理配准和空间校正操作流程
- 问题描述:vcenter上数据存储的事件中有大量的警告,还有偶尔的报错,存储设备naa...的路径冗余已降级,路径。。已关闭,受影响的数据存储 与存储设备。。。连接丢失,路径。。已断开,受影响的存储
- python竖着展示诗_十八年-python诗词动画
- c# DGV导出excel 使用object类型数组,解决string类型需双击后或分列才可运算的异常
- 2022最全的BAT大厂面试题整理及分析
- 19、网络配线架打线工艺
- 通过TMG发布ActiveSync
- 通用Mapper注解方式实现动态SQL
- outlook2007 菜单灰色...不能使用的解决方案
- LDAP基础:8:ldap用户密码确认和修改
- oracle 通过数据库主键外键级联删除
- Tik Tok小店:英国tiktok小店怎么核对结算
- 消息规模超千亿,同程艺龙的消息系统建设实践