在C#

时间:2018-02-14 19:11:11

标签: c# dll dllimport extern user32

我最近一直忙于在C#中使用User32.dll中的函数。为此你使用了很多

[ImportDll("User32.dll")]
public static extern void functionName();

如果你开始谷歌搜索如何使用特定的功能,每个人似乎都使用字段错误。当你应该使用哪个领域以及如何知道如何。

字段和说明:

  

BestFitMapping:在将Unicode字符转换为ANSI字符时启用或禁用最佳拟合映射行为。

     

CallingConvention:
  表示入口点的调用约定。

     

字符集:
  指示如何将字符串参数封送到方法并控制名称重整。

     

EntryPoint:指示要调用的DLL入口点的名称或序号。

     

ExactSpelling:控制DllImportAttribute.CharSet字段是否导致公共语言运行库在非托管DLL中搜索除指定名称之外的入口点名称。

     

PreserveSig:指示是否直接转换具有HRESULT或retval返回值的非托管方法,或者HRESULT或retval返回值是否自动转换为异常。

     

SetLastError:指示在从属性方法返回之前被调用者是否调用SetLastError Win32 API函数。

     

ThrowOnUnmappableChar:启用或禁用在转换为ANSI“?”的不可映射的Unicode字符上抛出异常。字符。

来源:DllImportAttribute Class (System.Runtime.InteropServices)

这是我能找到的关于他们的信息,有人可以解释这些字段以及何时开始。

修改

示例:

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]

是否需要SetLastError和CharSet字段,如果它们是什么,它们会怎么做。每个领域都有这个问题。

0 个答案:

没有答案