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

  • 相关阅读:
    算法----(1)冒泡排序
    淘宝爬虫
    爬虫_豆瓣电影top250 (正则表达式)
    爬虫_猫眼电影top100(正则表达式)
    Android 简单调用摄像头
    Android 简单天气预报
    思维模型
    This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you
    Android studio preview界面无法预览,报错render problem
    Android studio 3.1.2报错,no target device found
  • 原文地址:https://www.cnblogs.com/magic-xxj/p/7656928.html
Copyright © 2011-2022 走看看