当前位置: 首页 > news >正文

GetPrivateProfileSection使用

基本语法

GetPrivateProfileSection 是一个 Windows API 函数,用于检索指定 INI 文件中特定节的所有键值对。它可以读取INI文件中指定节所有的键值对并将结果存储在指定的缓冲区中。

以下是 GetPrivateProfileSection 函数的基本语法:

DWORD GetPrivateProfileSection(LPCWSTR lpAppName,LPWSTR  lpReturnedString,DWORD   nSize,LPCWSTR lpFileName
);

参数说明:

  1. lpAppName:INI 文件中要读取的节名。如果为 NULL 则返回所有节。
  2. lpReturnedString:指向用于接收键值对字符串的缓冲区的指针。
  3. nSize:指定缓冲区大小,以字符为单位。
  4. lpFileName:INI 文件路径和文件名。

此函数返回一个 DWORD 类型的值,指定写入缓冲区的字节数(以字节为单位),不包括 NULL 结尾字符。

GetPrivateProfileSection 函数读取指定节中所有的键值对,每个键值对之间是用 NULL 字符分隔的。因此,lpReturnedString 缓冲区中的字符串格式为:key1=value1\0key2=value2\0…\0keyn=valuen\0\0。

举例说明:

以下是使用 GetPrivateProfileSection 函数检索 INI 文件中特定节的键值对的两个场景示例:

假设有一个 INI 文件 “test.ini” 包含以下内容:

[Section1]
Key1=Value1
Key2=Value2[Section2]
Key3=Value3
Key4=Value4
例1:读取 INI 文件中特定节的所有键值对

以下示例演示了如何使用 GetPrivateProfileSection 函数检索 “test.ini” 文件中 “Section2” 节的所有键值对,并将结果存储在缓冲区中:

Imports System.Runtime.InteropServicesModule Module1<DllImport("kernel32.dll", CharSet:=CharSet.Unicode)>Public Function GetPrivateProfileSection(ByVal lpAppName As String, ByVal lpReturnedString As System.Text.StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As IntegerEnd FunctionSub Main()Dim filename As String = "test.ini"Dim section As String = "Section2"Dim buffer As New System.Text.StringBuilder(2048)Dim size As Integer = GetPrivateProfileSection(section, buffer, 2048, filename)If size <= 0 ThenConsole.WriteLine("Failed to read section.")ReturnEnd IfDim result As String = buffer.ToString().Substring(0, size)Console.WriteLine("Section2: " & result)End Sub
End Module

在上面的代码示例中,我们指定了要读取的 INI 文件名 “test.ini” 和要读取的节名 “Section2”。缓冲区大小为 2048 个字符。当 GetPrivateProfileSection 函数成功调用后,我们使用输出流在控制台窗口中显示读取到的结果字符串。

输出结果将会是:

Section2: Key3=Value3
Key4=Value4

例2: 枚举INI文件中所有的节名和键值

以下示例演示了如何枚举 “test.ini” 文件中所有的节(Section1和Section2)和它们的键值对,并将结果存储在缓冲区中:

Imports System.Runtime.InteropServicesModule Module1<DllImport("kernel32.dll", CharSet:=CharSet.Unicode)>Public Function GetPrivateProfileSection(ByVal lpAppName As String, ByVal lpReturnedString As System.Text.StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As IntegerEnd FunctionSub Main()Dim filename As String = "test.ini"Dim buffer As New System.Text.StringBuilder(2048)Dim size As Integer = GetPrivateProfileSection(Nothing, buffer, 2048, filename)If size <= 0 ThenConsole.WriteLine("Failed to read INI file.")ReturnEnd IfDim result As String = buffer.ToString().Substring(0, size)Console.WriteLine(result)End Sub
End Module

在上面的代码示例中,我们没有指定要读取的节名,因此 GetPrivateProfileSection 函数将返回 “test.ini” 文件中所有的节名和它们的键值对。缓冲区大小为 2048 个字符。当 GetPrivateProfileSection 函数成功调用后,我们使用输出流在控制台窗口中显示读取到的结果字符串。

输出结果将会是:

Section1
Key1=Value1
Key2=Value2
Section2
Key3=Value3
Key4=Value4

请注意,这是用于 Windows 平台的 API 函数。如果你需要在 VBA 中使用 INI 文件,请使用内置函数 GetPrivateProfileString 、 GetAllSettings 或 GetSetting。

GetPrivateProfileString 使用请参照:GetPrivateProfileString 使用说明






大鹏一日同风起 扶摇直上九万里 加油!!!!

End

相关文章:

  • IP-guard WebServer RCE漏洞复现
  • JavaEE初阶学习:Linux 基本使用和 web 程序部署
  • 十进制转换成2进制
  • 建设大型综合运维平台,对接集成多厂商网管系统
  • 线程池创建、执行、销毁的原理解析
  • Python 解决tkinter的Menu菜单command参数与bind方法共用触发事件
  • 如何设置静态IP
  • 【云栖2023】王峰:开源大数据平台3.0技术解读
  • RedisTemplate 使用 pipeline 时需要注意的问题
  • 在opencv OpenCV中打开相机摄像头,用分水岭算法实时实现图像的分割与提取
  • 策略模式~
  • 本地浏览器全局翻译 demo 以火狐firefox为例【免费-简单】
  • 用于图像处理的高斯滤波器 (LoG) 拉普拉斯
  • Sentinel网关限流
  • 前端 a链接 如何实现下载功能
  • 【Amaple教程】5. 插件
  • AngularJS指令开发(1)——参数详解
  • Docker容器管理
  • java多线程
  • learning koa2.x
  • linux安装openssl、swoole等扩展的具体步骤
  • mysql中InnoDB引擎中页的概念
  • nginx 负载服务器优化
  • opencv python Meanshift 和 Camshift
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • 分享几个不错的工具
  • 技术:超级实用的电脑小技巧
  • 我有几个粽子,和一个故事
  • 无服务器化是企业 IT 架构的未来吗?
  • 线上 python http server profile 实践
  • 想写好前端,先练好内功
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 从如何停掉 Promise 链说起
  • ​虚拟化系列介绍(十)
  • (007)XHTML文档之标题——h1~h6
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (四)Linux Shell编程——输入输出重定向
  • (万字长文)Spring的核心知识尽揽其中
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)http协议
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net IOC框架入门之一 Unity
  • .NET 发展历程
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 使用配置文件
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /boot 内存空间不够
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子