• 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);

  • 相关阅读:
    在win2003中sql server2005的安装及配置
    excel多行以逗号拼接为一行
    git删除分支
    IeXglEvEyH
    excel为某列数据加双引号和逗号,用于拼接成json列表
    where 1=1 的作用
    ThreadLocal 定义、使用场景、案例、原理、注意事项
    gitlab第一次开发项目步骤
    git切回旧版本代码后再切回最新代码
    CountDownLatch与CyclicBarrier与Semaphore的区别
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/3983792.html
Copyright © 2020-2023  润新知