zoukankan      html  css  js  c++  java
  • DllImport属性详解

    API函数是构筑Windows的基石, 是Windows编程的必备利器。每一种Windows应用程序开发工具都提供间接或者直接的方式调用Win32API,C#也不例外。使用Win32API的一个好处就是,我们可以实现更多的功能。

    首先,要引入命名空间:using System.Runtime.InteropServices;

    然后,声明在程序中所要用到的API函数。注意方法体为空。

    DllImport属性用于指定包含外部方法的实现的dll位置。

    (1)DllImport属性只能放在方法声明上。

    (2)DllImport具有单个定位参数:指定包含被导入方法的dll名称的dllName参数。

    (3)DllImport具有6个命名参数:

    a、CallingConvention参数:指示入口点的调用约定,如果未指定CallingConvention,则使用默认值CallingConvention.Winapi;

    b、CharSet参数:指示用在入口点种的字符集。如果未指定CharSet,则使用默认值CharSet.Auto;

    c、EntryPoint参数:给出所声明的方法在dll中入口点的名称。如果未指定EntryPoint,则使用方法本身的名称;

    d、ExactSpelling参数:指示EntryPoint是否必须与指示的入口点的拼写完全匹配。如果未指定ExactSpelling,则使用默认值false;

    e、PreserveSig参数:指示方法的签名应被应当被保留还是被转换。当签名被转换时,它被转换为一个具有HRESULT返回值和该返回值的一个名为retval的附加输出参数签名。如果未指定PreserveSig,则使用默认值false;

    f、SetLastError参数:指示方法是否保留Win32上的错误,如果未指定SetLastError,则使用默认值false。

    DllImport是一次性属性类,而且用DllImport修饰的方法必须具有extern修饰符。

    例子:[DllImport("kernel32")]

    private static extern void GetWindowsDirectory(StringBuilder WinDir,int count);

    [DllImport("user32.dll",EntryPoint = "FlashWindow")]
    private static extern bool FlashWindow(IntPtr hWnd,bool bInvert);

    [DllImport("ws2_32.dll")]
    private static extern int inet_addr(string cp);

    [DllImport("IPHLPAPI.dll")]
    private static extern int SendARP(Int32 DestIP, Int32 SrcIP, ref Int64 pMacAddr, ref Int32 PhyAddrLen);

  • 相关阅读:
    github教程
    Django订单接入支付宝
    python去除html标签的几种方法
    vue-cli项目生成
    restful设计规范
    Vue的指令系统、计算属性和表单输入绑定
    Vue工具
    药物不良反应数据库信息的下载
    爬虫案例之Pubmed数据库下载
    数据分析案例之39药品网
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/3983792.html
Copyright © 2011-2022 走看看