You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.9 KiB

1 month ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.InteropServices;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace ShenTun.Camera.Common
  8. {
  9. public class IniConfigHelper
  10. {
  11. private const int VALUE_MAX_LEN = 1024; //值最大长度
  12. /// <summary>
  13. /// 写配置到ini文件
  14. /// </summary>
  15. /// <param name="appName">节点名</param>
  16. /// <param name="keyName">要写入的key</param>
  17. /// <param name="value">要写入的值</param>
  18. /// <param name="fileName">要写入ini配置文件路径</param>
  19. /// <returns>成功返回非0,失败返回0</returns>
  20. [DllImport("kernel32")]
  21. private static extern long WritePrivateProfileString(string appName, string keyName,
  22. string value, string fileName);
  23. /// <summary>
  24. /// 从ini配置文件读配置
  25. /// </summary>
  26. /// <param name="appName">节点名</param>
  27. /// <param name="keyName">目标key</param>
  28. /// <param name="defaultValue">如果找不到目标key就返回这个默认值</param>
  29. /// <param name="returnedString">返回目标key对应的值</param>
  30. /// <param name="size">returnedString的大小</param>
  31. /// <param name="fileName">要读取的ini配置文件路径</param>
  32. /// <returns>返回返回字符串的长度</returns>
  33. [DllImport("kernel32")]
  34. private static extern long GetPrivateProfileString(string appName, string keyName,
  35. string defaultValue, StringBuilder returnedString, int size, string fileName);
  36. /// <summary>
  37. /// 外部接口,写配置
  38. /// </summary>
  39. /// <param name="iniFilePath">ini配置文件路径</param>
  40. /// <param name="appName">节点名</param>
  41. /// <param name="keyName">key</param>
  42. /// <param name="value">值</param>
  43. /// <returns>成功返回true,失败返回false</returns>
  44. public static bool WriteSetting(string iniFilePath, string appName, string keyName, string value)
  45. {
  46. return (0 == WritePrivateProfileString(appName, keyName, value, iniFilePath)? false :true);
  47. }
  48. /// <summary>
  49. /// 读配置
  50. /// </summary>
  51. /// <param name="iniFilePath">ini配置文件路径</param>
  52. /// <param name="appName">节点名</param>
  53. /// <param name="keyName">目标key</param>
  54. /// <param name="defaultValue">默认值</param>
  55. /// <returns>返回key对应的value</returns>
  56. public static string ReadSetting(string iniFilePath, string appName, string keyName, string defaultValue)
  57. {
  58. StringBuilder result = new StringBuilder(VALUE_MAX_LEN+1);
  59. GetPrivateProfileString(appName, keyName, defaultValue, result, VALUE_MAX_LEN, iniFilePath);
  60. return result.ToString();
  61. }
  62. }
  63. }