.NET官方封装的Win32API类库

大部分朋友在使用C#.NET调用Win32API时都不清楚API函数的声明,要么就是抄网上的代码,但是总会遇到各种各样奇奇怪怪难以解决的问题,打算自己封装又发现工作量实在太大。
其实完全没有必要自己动手封装, .NET 基金会官方已经使用了 P/Invoke方式为我们封装了一套针对.NET 的开源 Win32API。
这套API包含了大量的 Win32 库,使用非常方便,导入DLL引用即可,因为是.NET DLL,所以C#和VB.NET都可以方便的使用。
涵盖几乎全部常用的Win32API函数的声明,如 gdi32.dll 和 kernel32.dll 及 user32.dll 等近30个DLL库的.NET实现。
使用官方的库优点是稳定可靠且安全,不用自己写,也不用复制网上的代码避免出错。
因为该项目是开源的,所以会有更多的人加入进来不断改进共同完善类库。
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.
可以在 Nuget.org 搜索 PInvoke 找到已经编译好的DLL类库直接下载使用。

顺便给大家推荐一个网站
.NET互操作百科:www.pinvoke.net
上面有大量的Win32API P/Invoke调用参考示例

转自:.NET官方封装的Win32API类库

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例代码,演示如何在VB.NET中调用使用C++/CLI封装的SendMessage API: 首先,我们需要创建一个C++/CLI类,用于封装SendMessage API。在Visual Studio中,创建一个新的C++/CLI类库项目,命名为“SendMessageWrapper”。 接下来,将以下代码添加到SendMessageWrapper.h文件中: ``` #pragma once using namespace System; namespace SendMessageWrapper { public ref class SendMessageAPI { public: static void SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); }; } ``` 这段代码定义了一个名为SendMessageAPI的公共C++/CLI类,该类包含一个名为SendMessage的公共静态方法。该方法接受四个参数:窗口句柄(hWnd)、消息代码(msg)、wParam和lParam。 接下来,我们需要在SendMessageWrapper.cpp文件中实现SendMessage方法。以下是实现代码: ``` #include "stdafx.h" #include "SendMessageWrapper.h" #include <windows.h> namespace SendMessageWrapper { void SendMessageAPI::SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam) { SendMessage((HWND)hWnd.ToPointer(), msg, (WPARAM)wParam.ToPointer(), (LPARAM)lParam.ToPointer()); } } ``` 这段代码实际上调用了Win32 API中的SendMessage函数,并将传递给该函数的参数转换为正确的类型。 现在,我们已经成功地封装了SendMessage API。接下来,我们需要在VB.NET应用程序中调用它。 首先,我们需要在VB.NET应用程序中导入SendMessageWrapper类库。在Visual Studio中,右键单击项目,在上下文菜单中选择“添加引用”,然后在“浏览”选项卡中选择SendMessageWrapper.dll文件。 接下来,在VB.NET代码中,我们可以实例化SendMessageAPI类,并调用SendMessage方法。以下是示例代码: ``` Imports System.Runtime.InteropServices Imports SendMessageWrapper Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim hWnd As IntPtr = Me.Handle Dim msg As Integer = &H112 ' WM_SYSCOMMAND Dim wParam As IntPtr = New IntPtr(&HF170) ' SC_CLOSE Dim lParam As IntPtr = IntPtr.Zero SendMessageAPI.SendMessage(hWnd, msg, wParam, lParam) End Sub End Class ``` 这段代码创建了一个名为Form1的窗体,并在单击按钮时调用SendMessage API,以关闭该窗体。在此示例中,我们使用了WM_SYSCOMMAND消息和SC_CLOSE参数,这是关闭窗体的标准方法。 希望这个例子能够帮助您了解如何在VB.NET中调用使用C++/CLI封装的SendMessage API
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值