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

    DllImport属性详解(http://blog.csdn.net/yyz_2637/article/details/5340365) 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);

  • 相关阅读:
    算法时间测试
    HDU1164
    git 中 HEAD detached from 802e836
    mysql中的substring()截取字符函数
    git分支/标签操作
    git简介、基本命令和仓库操作
    markdown编辑器学习
    数据库的三范式
    switch语句能否作用在byte,long,string上
    Spring的优缺点
  • 原文地址:https://www.cnblogs.com/magic-xxj/p/7656928.html
Copyright © 2011-2022 走看看