Chinaunix首页 | 论坛 | 博客
  • 博客访问: 455542
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 16:56:59

这两天写个程序,需要操作INI文件,于是想法子把Windows中操作INI文件的几个API导入了VC#中。希望大家不断改进。那个FormatMessage() API我就没导入,呵呵。


using System;
using System.Runtime.InteropServices;
using System.Text;

sealed class INIHelper
 {
  //以下是对Windows API的再次封装
  //在MSDN的说明中,只有WritePrivateProfileString()失败时会有系统错误,其他的在失败时都会以缺省值返回
  //所以在WritePrivateProfileString()中加入了一个异常抛出

  public static int GetPrivateProfileString(string AppName,
   string KeyName,
   string Default,
   StringBuilder ReturnedString,
   int nSize,
   string FileName)
  {
   return API_GetPrivateProfileString(AppName, KeyName, Default, ReturnedString, nSize, FileName);
  }
 
  public static bool WritePrivateProfileString(string AppName,
   string KeyName,
   string String,
   string FileName)
  {
   bool boolResult = API_WritePrivateProfileString(AppName, KeyName, String, FileName);

   if ( !boolResult )
   {
    string strError = "系统异常代码:" + API_GetLastError().ToString();
    throw  new SystemException(strError);
   }
  
   return boolResult;
  }

 
  public static int GetPrivateProfileInt(string AppName,
   string KeyName,
   int nDefault,
   string FileName)
  {
   return API_GetPrivateProfileInt(AppName, KeyName, nDefault, FileName);  
  }
 
  public static bool WritePrivateProfileInt(string AppName, string KeyName, int Int,string FileName)
  {
   return WritePrivateProfileString(AppName, KeyName, Int.ToString(), FileName);  
  }

 
  ///////////////////////////////////////////////////////////////////////////////////////////////////
  //以下是从Kernel32.DLL中导入相关的Windows API
  
  [DllImport("Kernel32.DLL", CharSet = CharSet.Auto, EntryPoint = "GetPrivateProfileString")]
  private static extern int API_GetPrivateProfileString(string AppName,
   string KeyName,
   string Default,
   StringBuilder ReturnedString,
   int nSize,
   string FileName);

  [DllImport("Kernel32.DLL", CharSet = CharSet.Auto, EntryPoint = "WritePrivateProfileString")]
  private static extern bool API_WritePrivateProfileString(string AppName,
   string KeyName,
   string String,
   string FileName);    

  [DllImport("Kernel32.DLL", CharSet = CharSet.Auto, EntryPoint = "GetPrivateProfileInt")]
  private static extern int API_GetPrivateProfileInt(string AppName,
   string KeyName,
   int nDefault,
   string FileName);

  [DllImport("Kernel32.DLL", CharSet = CharSet.Auto, EntryPoint = "GetLastError")]
  private static extern int API_GetLastError();
 }


posted on 2004-08-22 10:06 Abbey的网络日志 阅读(1919)   


--------------------next---------------------

阅读(532) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~