c#中怎么操作Win32 API函数

介绍

这篇文章将为大家详细讲解有关c#中怎么操作Win32 API函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强> c#操作Win32 API函数

c#并不像c++,拥有属于自己的类库C #使用的类库是。net框架为所有。net程序开发提供的一个共有的类库。净框架SDK。虽然。净框架SDK内容十分庞大,功能也非常强大,但还不能面面俱到,至少它并没有提供直接操作INI文件所需要的相关的类。在本文中,c#操作Win32 API函数——WritePrivateProfileString()和GetPrivateProfileString()函数。这二个函数都位kernel32于”。dll”文件中。

我们知道在c#中使用的类库都是托管代码(托管代码)文件,而Win32 API的函数所处的文件,都是非托管代码(非托管代码)文件。这就导致了在c#中不可能直接使用这些非托管代码文件中的函数好。在。网框架为了保持对下的兼容,也为了充分利用以前的资源,提出了互操作,通过互操作可以实现对Win32 API的函数的调用。互操作不仅适用于Win32 API的函数,还可以用来访问托管的COM对象c #中对Win32 API的函数的互操作是通过命名空System.Runtime间”。InteropServices”中的“DllImport”特征类来实现的。它的主要作用是指示此属性化方法是作为非托管DLL的输出实现的。下面代码就是在c#利用命名空间“System.Runtime。InteropServices”中的“DllImport”特征类申明上面二个Win32 API的函数:

c#操作Win32 API函数:

 [, DllImport  (,“kernel32",),),, private  static  extern  long  WritePrivateProfileString  (, string  section ,,, string  key ,, string  val ,, string  filePath ),, 

参数说明:部分:INI文件中的段落;关键:INI文件中的关键字;val: INI文件中关键字的数值;filePath: INI文件的完整的路径和名称。

c#申明INI文件的读操作函数GetPrivateProfileString ():

 [, DllImport  (,“kernel32",),),, private  static  extern  int  GetPrivateProfileString  (, string  section ,,, string  key ,, string  def ,, StringBuilder  retVal ,,, int  size ,, string  filePath ),, 

参数说明:部分:INI文件中的段落名称,关键:INI文件中的关键字;def:无法读取时候时候的缺省数值;retVal:读取数值;大小:数值的大小;filePath: INI文件的完整路径和名称。

下面是一个读写INI文件的类

  <李> 

public  class  INIClass,

<李>

{,

<李>

public  string  inipath;李,

<李>

[DllImport (“kernel32")],

<李>

private  static  extern  long  WritePrivateProfileString
(string 部分,string 关键,string  val, string  filePath);李,

<李>

[DllImport (“kernel32")],

<李>

private  static  extern  int  GetPrivateProfileString
(string 部分,string 关键,string  def, StringBuilder  retVal, int 大小,string  filePath);李,

///<李>,

<李>

///,构造方法,

///<李>,

<李>

///,文件路径,

<李>

public  INIClass (string  INIPath),

<李>

{,

<李>

,=,;李,

<李>

},

///<李>,

<李>

///,写入INI文件,

///<李>,

<李>

///,项目名称(如,[TypeName],),

<李>

///,键,

<李>

///,值,

<李>

public  void  IniWriteValue (string 部分,string 关键,string 价值),

<李>

{,

<李>

WritePrivateProfileString(部分,关键值,this.inipath);李,

<李>

},

///<李>,

<李>

///,读出INI文件,

///<李>,

<李>

///,项目名称(如,[TypeName],),

<李>

///,键,

<李>

public  string  IniReadValue (string 部分,string 键),

<李>

{,

<李>

StringBuilder ,=,, StringBuilder (500);李,

<李>

int ,=,(部分,关键,““,临时,500年,this.inipath);李,

<李>

return  temp.ToString ();李,

<李>

},

///<李>,

<李>

///,验证文件是否存在,

///<李>,

<李>

///,布尔值,

<李>

public  bool  ExistINIFile (),

<李>

{,

<李>

return  File.Exists (inipath);李,

<李>

},

<李>

},,

c#中怎么操作Win32 API函数