分类:
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)