C# 中通过C++的GetPrivateProfileString和WritePrivateProfileString操作ini配置文件

namespace APIMethod
{
    /*
     * 姓名:谭义
     * 时间:2008.5.28
     * Q  Q:260511433
     * MSN :[email protected]
     * 邮箱:[email protected]
     * 备注:如果大家对此模块还需要补充或完善修改的,请和我联系,大家一起努力。
     * 注意:此模块只能获得一个键的值,如果谁能完善获得一个小节的所有键与值,请与我联系。
    */

/// <summary>
    /// Ini文件操作类
    /// </summary>
    public sealed class IniUtility
    {
        private static string _filePath = string.Empty;//文件路径

/// <summary>
        /// 文件路径
        /// </summary>
        public static string FilePath
        {
            get { return _filePath; }
            set { _filePath = value; }
        }

/// <summary>
        /// Windows API 对INI文件写方法
        /// </summary>
        /// <param name="lpApplicationName">要在其中写入新字串的小节名称。这个字串不区分大小写</param>
        /// <param name="lpKeyName">要设置的项名或条目名。这个字串不区分大小写。用null可删除这个小节的所有设置项</param>
        /// <param name="lpString">指定为这个项写入的字串值。用null表示删除这个项现有的字串</param>
        /// <param name="lpFileName">初始化文件的名字。如果没有指定完整路径名,则windows会在windows目录查找文件。如果文件没有找到,则函数会创建它</param>
        /// <returns></returns>
        [System.Runtime.InteropServices.DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);

/// <summary>
        /// Windows API 对INI文件读方法
        /// </summary>
        /// <param name="lpApplicationName">欲在其中查找条目的小节名称。这个字串不区分大小写。如设为null,就在lpReturnedString缓冲区内装载这个ini文件所有小节的列表</param>
        /// <param name="lpKeyName">欲获取的项名或条目名。这个字串不区分大小写。如设为null,就在lpReturnedString缓冲区内装载指定小节所有项的列表</param>
        /// <param name="lpDefault">指定的条目没有找到时返回的默认值。可设为空("")</param>
        /// <param name="lpReturnedString">指定一个字串缓冲区,长度至少为nSize</param>
        /// <param name="nSize">指定装载到lpReturnedString缓冲区的最大字符数量</param>
        /// <param name="lpFileName">初始化文件的名字。如没有指定一个完整路径名,windows就在Windows目录中查找文件</param>
        /// 注意:如lpKeyName参数为null,那么lpReturnedString缓冲区会载入指定小节所有设置项的一个列表。
        /// 每个项都用一个NULL字符分隔,最后一个项用两个NULL字符中止。也请参考GetPrivateProfileInt函数的注解
        /// <returns></returns>
        [System.Runtime.InteropServices.DllImport("kernel32")]
        private static extern long GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, System.Text.StringBuilder lpReturnedString, int nSize, string lpFileName);

/// <summary>
        /// 向Ini文件中写入值
        /// </summary>
        /// <param name="section">小节的名称</param>
        /// <param name="key">键的名称</param>
        /// <param name="value">键的值</param>
        /// <returns>执行成功为True,失败为False。</returns>
        public static long WriteIniKey(string section, string key, string value)
        {
            if (section.Trim().Length <= 0 || key.Trim().Length <= 0 ||
                value.Trim().Length <= 0) return 0;

return WritePrivateProfileString(section, key, value, FilePath);
        }

/// <summary>
        /// 删除指定小节中的键
        /// </summary>
        /// <param name="section">小节的名称</param>
        /// <param name="key">键的名称</param>
        /// <returns>执行成功为True,失败为False。</returns>
        public static long DeleteIniKey(string section, string key)
        {
            if (section.Trim().Length <= 0 || key.Trim().Length <= 0) return 0;

return WritePrivateProfileString(section, key, null, FilePath);
        }

/// <summary>
        /// 删除指定的小节(包括这个小节中所有的键)
        /// </summary>
        /// <param name="section">小节的名称</param>
        /// <returns>执行成功为True,失败为False。</returns>
        public static long DeleteIniSection(string section)
        {
            if (section.Trim().Length <= 0) return 0;

return WritePrivateProfileString(section, null, null, FilePath);
        }

/// <summary>
        /// 获得指定小节中键的值
        /// </summary>
        /// <param name="section">小节的名称</param>
        /// <param name="key">键的名称</param>
        /// <param name="defaultValue">如果键值为空,或没找到,返回指定的默认值。</param>
        /// <param name="capacity">缓冲区初始化大小。</param>
        /// <returns>键的值</returns>
        public static string GetIniKeyValue(string section, string key,string defaultValue,int capacity)
        {
            if (section.Trim().Length <= 0 || key.Trim().Length <= 0) return defaultValue;

System.Text.StringBuilder strTemp = new System.Text.StringBuilder(capacity);
            long returnValue = GetPrivateProfileString(section, key, defaultValue, strTemp, capacity, FilePath);

return strTemp.ToString().Trim();
        }

/// <summary>
        /// 获得指定小节中键的值
        /// </summary>
        /// <param name="section">小节的名称</param>
        /// <param name="key">键的名称</param>
        /// <param name="defaultValue">如果键值为空,或没找到,返回指定的默认值。</param>
        /// <returns>键的值</returns>
        public static string GetIniKeyValue(string section, string key, string defaultValue)
        {
            return GetIniKeyValue(section, key, defaultValue, 1024);
        }

/// <summary>
        /// 获得指定小节中键的值
        /// </summary>
        /// <param name="section">小节的名称</param>
        /// <param name="key">键的名称</param>
        /// <returns>键的值</returns>
        public static string GetIniKeyValue(string section, string key)
        {
            return GetIniKeyValue(section, key, string.Empty, 1024);
        }
    }
}

时间: 10-28

C# 中通过C++的GetPrivateProfileString和WritePrivateProfileString操作ini配置文件的相关文章

Python中操作ini配置文件

这篇博客我主要想总结一下python中的ini文件的使用,最近在写python操作mysql数据库,那么作为测试人员测试的环境包括(测试环境,UAT环境,生产环境)每次需要连接数据库的ip,端口,都会不同,那么如何方便的来修改这些内容,就想到了配置文件,接下来我们就了解一下python中的配置文件ini吧 ini配置文件常被用作存储程序中的一些参数,通过它,可以将经常需要改变的参数保存起来 ini文件分为两个部分,一部分是section,一部分是key,value 格式就是: [section1

GetPrivateProfileString函数--INI配置文件

GetPrivateProfileString函数用于获取INI配置文件中的内容. DWORD GetPrivateProfileString( LPCTSTR lpAppName, //INI文件中的一个字段名. LPCTSTR lpKeyName, //是lpAppName下的一个键名,通俗讲就是变量名. LPCTSTR lpDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量. LPTSTR lpReturnedString, //接收INI文件中的值的

在VC中读写ini配置文件

配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName); 读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedS

Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)

在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config]platformName=AndroidappPackage=com.sheinsideappActivity=.module.GuideActivitybaseUrl=http://0.0.0.0:4723/wd/hubfindElementTimes=10[cmd]openAppium=nod

在C#中使用Spire.doc对word的操作总结

在C#中使用Spire.doc对word的操作总结 在最近的工程中我们要处理一些word文档.通过在网上的大量搜索,我发现大多数软件功能不是不完整就是有重复.极少数可以完全实现的word组件又要收费.功夫不负有心人,终于找到了可以满足我们需要的免费的C# word程序库.为了和其他的作比较,我在这里先做以下汇总.希望对大家有帮助. 如何得到? 这个免费版的word 组件可以在Codeplex下载到,你也可以从本文里直接下载msi文件.它还提供了一些源代码. Word操作汇总 1.        

SQL 2005 中查询或执行另外的数据库操作的方法

原文:SQL 2005 中查询或执行另外的数据库操作的方法 摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据,又该怎么办呢? 1.Synonym 2.openquery 3.Linked Servers Server Object-->Linked Servers--> serverType 选择 SQL Server, 在 Security 中 选择"Be made using this se

WebView中的视频全屏的相关操作

最近工作中,基本一直在用WebView,今天就把它整理下: WebView 顾名思义,就是放一个网页,一个看起来十分简单,但是用起来不是那么简单的控件. 首先你肯定要定义,初始化一个webview,其实网上的例子很多,我这里就简单的把一些WebView 中可能会用到的的很重要的属性以及支持全屏播放视频该怎么实现的代码粘出来,直接放到项目中去就行了 <span style="white-space:pre"></span><pre name="co

请列出你在从事IT生涯中,最难以忘怀的一次误操作

IT系统最怕什么,我觉得就两点: 1.不可靠的软硬件. 2.误操作. 第一点就不用解释了,第二点是该文的内容,主要摘选自ITPUB的精华贴——[精华] 请列出你在从事DBA生涯中,最难以忘怀的一次误操作 中摘录各位网友的经验和教训,常看看以警惕自己. #2 一次一个session占用内存很大,这个session id比较大,所以以为是用户进程,kill, 则库立刻down了,查日志后,才知道是一个后台进程,但详细是哪个进程,现在忘记了. 好的是库起来了,这个故障,我一直牢记于心. 现在做任何操作

checkbox中jQuery对数组和对象的操作

------------------------------------------------------------------------------------------ 来段小例子,jQuery实现对表单中checkbox的全选/取消/反选 [email protected] <www.chenwei.ws>--------------------------- <input type="checkbox" class="all" /&