C#如何快速获取P/Invoke方法签名

使用API函数已经好几年了,封装函数签名基本是参照MSDN上的文档,然后再做数据类型对应。

虽然有 pinvoke.net 这个网站,但基本很少使用。一方面是想多动手,另一方面是因为各种数据类型基本都用过了,都能自己在C#中 对应 起来。

最近在逛github时,发现了一个官方的项目,GitHub - dotnet/pinvoke: A library containing all P/Invoke code so you don't have to import it every time. Maintained and updated to support the latest Windows OS.,这个项目是流行操作系统的所有P/Invoke方法签名的库集合。

LibraryPackage nameDescription
advapi32.dllPInvoke.AdvApi32Windows Advanced Services
bcrypt.dllPInvoke.BCryptWindows Cryptography API: Next Generation
cabinet.dllPInvoke.CabinetCabinet API Functions
cfgmgr32.dllPInvoke.CfgMgr32Device and Driver Installation
crypt32.dllPInvoke.Crypt32Windows Cryptography API
DwmApi.dllPInvoke.DwmApiDesktop Window Manager
fusion.dllPInvoke.Fusion.NET Framework Fusion
gdi32.dllPInvoke.Gdi32Windows Graphics Device Interface
hid.dllPInvoke.HidWindows Human Interface Devices
iphlpapi.dllPInvoke.IPHlpApiIP Helper
kernel32.dllPInvoke.Kernel32Windows Kernel API
magnification.dllPInvoke.MagnificationWindows Magnification API
mscoree.dllPInvoke.MSCorEE.NET Framework CLR host
msi.dllPInvoke.MsiMicrosoft Installer
ncrypt.dllPInvoke.NCryptWindows Cryptography API: Next Generation
netapi32.dllPInvoke.NetApi32Network Management
newdev.dllPInvoke.NewDevDevice and Driver Installation
ntdll.dllPInvoke.NTDllWindows NTDll
psapi.dllPInvoke.PsapiWindows Process Status API
setupapi.dllPInvoke.SetupApiWindows setup API
SHCore.dllPInvoke.SHCoreWindows Shell
shell32.dllPInvoke.Shell32Windows Shell
user32.dllPInvoke.User32Windows User Interface
userenv.dllPInvoke.UserenvWindows User Environment
uxtheme.dllPInvoke.UxThemeWindows Visual Styles
winusb.dllPInvoke.WinUsbUSB Driver
WtsApi32.dllPInvoke.WtsApi32Windows Remote Desktop Services

例如要使用User32中的ShowWindow函数

1、导入Nuget包(PInvoke.User32)

2、使用

写在最后

有了这个项目,以后调用API函数可以更方便。最重要的是,官方提供了函数签名示例,我们可以从里面学到很多东西。

2024.11.06更新

pinvoke项目已经废弃,使用CsWin32项目替代,使用方法跟上述基本一致。

CsWin32项目将不同的dll导出函数都放到一个包中,不需要再去使用对应dll的包。

nuget搜索CsWin32包使用即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人脑与机器连接:神经科技的伦理边界探讨

内容概要 在当今科技飞速发展的时代,人脑与机器连接已成为一个引人注目的前沿领域。在这一背景下,神经科技的探索为我们打开了一个全新的世界,从脑机接口到人工智能的飞跃应用,不仅加速了技术的进步,更触动了我们内心…

这么多优秀的 AI 大模型,我应该选择哪个呢?

前两次,我们向大家介绍了当前全球最有名的总共 11 个 AI 大模型。在此期间,openAI 于 8月 6 日 最新推出另了一个超强 AI 大模型 —— GPT-4o(Aug 6),强势跻入全球前列。不得不说,这才多久,open…

软件开发设计管理文档,项目设计规程制度,项目开发规程,项目建设方案文档(word原件)

2 过程总体描述 2.1 过程概述 2.2 过程流程图 3 过程元素描述 3.1 产品方案 3.2 产品设计 3.3 产品实现 获取方式:本文末个人名片直接获取。 软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表&#xf…

【taro react】 ---- 常用自定义 React Hooks 的实现【六】之类渐入动画效果的轮播

1. 效果 2. 场景 css 效果实现:可以看到效果图中就是一个图片从小到大的切换动画效果,这个效果很简单,使用 css 的 transform 的 scale 来实现图片的从小到大的效果,切换就更加简单了,不管是 opacity 还是 visibility 都可以实现图片的隐藏和显示的切换。React.Children.m…

2024年转行指南:大学生进军就业前景广阔的领域——人工智能大模型

据教育部数据统计,2024高校毕业生规模预计达1179万人,将再创历史新高,“就业难”仍是当前大学毕业生需要直面的问题。在此背景下,选择一个就业前景好的专业尤为重要。 究竟学什么样的专业好就业呢?给毕业生们推荐3个当…

重学SpringBoot3-整合 Elasticsearch 8.x (一)客户端方式

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-整合 Elasticsearch 8.x (一)客户端方式 1. 为什么选择 Elasticsearch?2. Spring Boot 3 和 Elasticsearch 8.x 的集…

【网络安全渗透测试零基础入门】Vulnhub靶机Kioptrix level-4 多种姿势渗透详解,收藏这一篇就够了!

前言 这是阳哥给粉丝盆友们整理的网络安全渗透测试入门阶段Vulnhub靶场实战阶段教程 喜欢的朋友们,记得给我点赞支持和收藏一下,关注我,学习黑客技术。 环境配置 服务版本探测:sudo nmap -sT -sV -sC -O -p22,80,139,445 22端…

由中文乱码引来的一系列学习——Qt

前言 解决中文引起的乱码,并不难,网上一搜就有好几个方法任君选择,但是解决乱码的这些方法的原理是什么,我一直没太明白。 这次项目需要在Android环境下运行,而根据Qt跨平台的特性,我一般是在Windows环境…

浅析数据库缓存一致性问题

在真实的业务场景中,我们的业务的数据——例如订单、会员、支付等——都是持久化到数据库中的,因为数据库能有很好的事务保证、持久化保证。但是,正因为数据库要能够满足这么多优秀的功能特性,使得数据库在设计上通常难以兼顾到性…

element plus el-form自定义验证输入框为纯数字函数

element plus 的el-form 使用自定义验证器&#xff0c;验证纯数字&#xff0c;禁止输入小数、中文、字母、特殊符号。input的maxlength为最大输入多少位长度 效果图 <el-form ref"dataFormRef" :model"dataForm" :rules"dataRules" label-w…

jira如何查看历史Sprint

方法一&#xff1a;通过看板模块查看历史 Sprint 进入看板模块 在项目的看板中&#xff0c;找到并点击“模块项”。在右侧历史记录中选择一个模块项。 查看 Sprint 历史 进入模块项界面后&#xff0c;点击“搜索”按钮旁边的“更多”下拉菜单。勾选“Sprint”选项&#xff0c;…

阿里云 DataWorks 正式支持 SelectDB Apache Doris 数据源,实现 MySQL 整库实时同步

SelectDB 是由飞轮科技基于 Apache Doris 内核打造的现代化数据仓库&#xff0c;支持大规模实时数据上的极速查询分析。 通过实时、统一、弹性、开放的核心能力&#xff0c;能够为企业提供高性价比、简单易用、安全稳定、低成本的实时大数据分析支持。SelectDB 具备世界领先的实…

OV(企业型)通配符域名SSL证书

SSL证书是由CA机构签发的&#xff0c;相信这一点大家都知道&#xff0c;然而目前全世界兼容性可以达到99%机构仅有&#xff1a;GlobalSign、DigiCert、Sectigo、Certum&#xff0c;最后一家还是勉强。 SSL证书选择OV&#xff08;国内有人称之为企业型&#xff09;其实就是实名…

软考系统分析师知识点三五: 考前强记知识点

前言 今年报考了11月份的软考高级&#xff1a;系统分析师。 考试时间&#xff1a;11月9日。 倒计时&#xff1a;2天。 目标&#xff1a;优先应试&#xff0c;其次学习&#xff0c;再次实践。 复习计划第四阶段&#xff1a;考前强记知识点。 考前强记知识点 系统分析主要任…

基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)

1.概述 比较排序算法 算法最好最坏平均空间稳定思想注意事项冒泡O(n)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)Y比较最好情况需要额外判断选择O( n 2 n^2 n2)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)N比较交换次数一般少于冒泡堆O( n l o g n nlogn nlogn)O( n l o g n nlogn nlogn)O( n l…

探索 Python 视频编辑新纪元:MoviePy库的神秘面纱

文章目录 探索 Python 视频编辑新纪元&#xff1a;MoviePy 库的神秘面纱第一部分&#xff1a;背景介绍第二部分&#xff1a;MoviePy 是什么&#xff1f;第三部分&#xff1a;如何安装这个库&#xff1f;第四部分&#xff1a;简单的库函数使用方法第五部分&#xff1a;结合场景使…

计算机网络:网络层 —— 多播路由选择协议

文章目录 多播路由选择协议多播转发树构建多播转发树基于源树的多播路由选择建立广播转发树建立多播转发树 组共享树的多播路由选择基于核心的生成树的建立过程 因特网的多播路由选择协议 多播路由选择协议 仅使用 IGMP 并不能在因特网上进行IP多播。连接在局域网上的多播路由…

Jenkins插件使用问题总结

Git Push插件 插件介绍 主要是用于git推送代码到远程仓库中使用&#xff0c;插件地址 pipeline中使用 官方说明中只有一句代码gitPush(gitScm: scm, targetBranch: env.BRANCH_NAME, targetRepo: origin) 流水线语法中也做的不齐全所以一开始我老是设置错&#xff0c;导致代…

【命令操作】Linux三剑客之awk详解 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【命令操作】Linux三剑客之awk详解 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天带来一篇关于Linux三剑客之awk命令详解的文章。在文本处理工具中&#xff0c;awk以其强大的文本筛选、格式化和数据处理功能而闻名。它能够在处理结构化…

操作系统概念(一)——IOMMU学习

系列文章目录 提示&#xff1a;本系列主要记录工作过程中遇到的操作系统基础概念以及工作原理 第一章 操作系统之IOMMU 文章目录 系列文章目录1. 设备访问内存的几种主要方式1.1 传统的 I/O 访问&#xff08;程序控制 I/O&#xff09;1.2 直接内存访问&#xff08;DMA&#xf…