递归火山软件开发平台

标题: 火山OBS Studio 常用基础操作类,不断更新开源 [打印本页]

作者: 朕的    时间: 3 天前
标题: 火山OBS Studio 常用基础操作类,不断更新开源
后期有空持续更新 (, 下载次数: 6)
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 包 火山.程序 <注释 = "程序依赖 仰望非依赖版模块">

  3. 类 OBS常量类 <公开 折叠 @全局类 = 真>
  4. {
  5.     常量 OBS进程名 <公开 类型 = 文本型 值 = "obs64.exe">

  6.     #
  7. }

  8. 类 OBS路径类 <公开 注释 = "OBS Studio 从 28.0 版本开始使用QT6界面库不再支持 32 位操作系统。" 折叠 @全局类 = 真>
  9. {
  10.     变量 OBS主目录 <静态 类型 = 文本型>

  11.     方法 OBS_路径_取主目录 <公开 静态 类型 = 文本型 折叠>
  12.     {

  13.         // 方法1: 尝试读取 64位系统上的标准注册表路径 -- HKEY_LOCAL_MACHINE\SOFTWARE\OBS Studio
  14.         OBS主目录 = 取文本注册项2 (注册表根目录类型.本地机器, "SOFTWARE\\OBS Studio", "", ) + "\"

  15.         // 方法2: 尝试读取 32位程序在64位系统上的注册表路径 (WOW6432Node) --' HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\OBS Studio

  16.         如果真 (OBS主目录 == "")
  17.         {
  18.             OBS主目录 = 取文本注册项2 (注册表根目录类型.本地机器, "SOFTWARE\\WOW6432Node\\OBS Studio", "", ) + "\"

  19.         }

  20.         // 方法3: 尝试读取当前用户的注册表 (较少见,但作为备选) --- ' HKEY_CURRENT_USER\SOFTWARE\OBS Studio

  21.         如果真 (OBS主目录 == "")
  22.         {
  23.             OBS主目录 = 取文本注册项2 (注册表根目录类型.现行用户, "SOFTWARE\\OBS Studio", "", ) + "\"
  24.         }


  25.         返回 (OBS主目录)



  26.     }

  27.     方法 OBS_路径_取主程序路径 <公开 静态 类型 = 文本型 折叠>
  28.     参数 主目录位置 <类型 = 文本型 @默认值 = 空对象>
  29.     {
  30.         如果真 (主目录位置 == 空对象)
  31.         {
  32.             如果真 (OBS主目录 == "")
  33.             {
  34.                 OBS_路径_取主目录 ()
  35.             }

  36.             主目录位置 = OBS主目录

  37.         }


  38.         如果 (文件是否存在 (主目录位置))
  39.         {
  40.             返回 (主目录位置 + "bin\\64bit\\obs64.exe")
  41.         }
  42.         否则
  43.         {

  44.             返回 ("")
  45.         }
  46.     }

  47.     方法 OBS_路径_取核心插件目录 <公开 静态 类型 = 文本型 折叠>
  48.     参数 主目录位置 <类型 = 文本型 @默认值 = 空对象>
  49.     {
  50.         如果真 (主目录位置 == 空对象)
  51.         {
  52.             如果真 (OBS主目录 == "")
  53.             {
  54.                 OBS_路径_取主目录 ()
  55.             }

  56.             主目录位置 = OBS主目录
  57.         }


  58.         如果 (文件是否存在 (主目录位置))
  59.         {
  60.             返回 (主目录位置 + "obs-plugins\\64bit\")
  61.         }
  62.         否则
  63.         {

  64.             返回 ("")
  65.         }
  66.     }

  67.     方法 OBS_路径_取第三方插件目录 <公开 静态 类型 = 文本型 折叠>
  68.     {
  69.         变量 目录 <类型 = 文本型>
  70.         目录 = 读环境变量 ("PROGRAMDATA") + "\\obs-studio\\plugins\"


  71.         如果 (文件是否存在 (目录))
  72.         {
  73.             返回 (目录)
  74.         }
  75.         否则
  76.         {

  77.             目录 = 取特定目录2 (特定目录类型2.通常程序数据) + "obs-studio\\plugins\"
  78.             如果 (文件是否存在 (目录))
  79.             {
  80.                 返回 (目录)
  81.             }

  82.         }


  83.         返回 ("")
  84.     }
  85. }

  86. 类 OBS程序类 <公开 折叠 @全局类 = 真>
  87. {
  88.     方法 OBS_程序_取版本号 <公开 静态 类型 = 文本型 折叠>
  89.     {
  90.         变量 版本信息 <类型 = 版本信息类_>
  91.         版本信息 = 程序_取程序版本信息 (OBS_路径_取主程序路径 ())
  92.         返回 (版本信息.文件版本)
  93.     }

  94.     方法 OBS_程序_取正在运行路径数组 <公开 静态 类型 = 文本数组类 折叠>
  95.     {
  96.         变量 obsexe <类型 = 文本型>
  97.         变量 进程名 <类型 = 文本数组类>
  98.         变量 进程ID <类型 = 整数数组类>
  99.         变量 进程路径 <类型 = 文本数组类>
  100.         obsexe = OBS_路径_取主程序路径 ()
  101.         进程类_.进程_枚举进程 (进程名, 进程ID, 真, 进程路径, OBS常量类.OBS进程名)
  102.         // 进程路径.枚举循环 ()
  103.         {
  104.             // 调试输出 (进程路径.取枚举值 (), "AA")


  105.         }

  106.         返回 (进程路径)
  107.     }

  108.     #
  109. }
复制代码



作者: 朕的    时间: 3 天前
  1. 感谢您分享这段火山视窗(Huoshan Studio)的代码!我已经仔细学习了您的实现。这是一段结构清晰、功能完整的代码,用于管理和获取与 OBS Studio 相关的信息。

  2. 以下是我对您代码的分析、学习总结和一些可能的优化建议:

  3. 代码分析与学习
  4. 整体架构优秀:
  5. 您使用了面向对象的方式,将相关的常量、路径和程序操作分别封装在 OBS常量类、OBS路径类 和 OBS程序类 中,逻辑清晰,易于维护和扩展。
  6. 大量使用了 静态 方法,这非常适合工具类的场景,无需实例化即可调用。
  7. OBS路径类 实现精良:
  8. OBS_路径_取主目录:
  9. 正确地考虑了三种注册表查找路径(HKEY_LOCAL_MACHINE\SOFTWARE\OBS Studio, WOW6432Node, HKEY_CURRENT_USER),覆盖了绝大多数安装情况。
  10. 使用 取文本注册项2 是火山视窗中读取注册表的正确方式。
  11. 逻辑清晰,按优先级尝试,一旦找到即返回。
  12. OBS_路径_取主程序路径:
  13. 接受可选参数 主目录位置,增加了灵活性。
  14. 内部调用了 OBS_路径_取主目录 来填充静态变量 OBS主目录,实现了缓存,避免重复cha询注册表。
  15. 返回了正确的主程序路径 bin\64bit\obs64.exe。
  16. OBS_路径_取核心插件目录:
  17. 与主程序路径类似,正确返回了 obs-plugins\64bit\ 目录。
  18. OBS_路径_取第三方插件目录:
  19. 首选方法:使用 读环境变量("PROGRAMDATA") 获取 C:\ProgramData 路径,这是标准且可靠的做法。
  20. 备用方法:使用 取特定目录2(特定目录类型2.通常程序数据),这是一个非常好的容错设计。取特定目录2 是火山视窗中获取系统特殊文件夹的标准方法,比硬编码路径更健壮。这比直接返回硬编码路径 C:\ProgramData\... 更加完善。
  21. OBS程序类 功能实用:
  22. OBS_程序_取版本号:
  23. 利用 程序_取程序版本信息 函数获取主程序文件的版本信息,是一个非常实用的功能。
  24. OBS_程序_取正在运行路径数组:
  25. 使用 进程类_.进程_枚举进程 来查找所有名为 obs64.exe 的进程,并获取其路径。
  26. 返回一个 文本数组类,可以处理多个 OBS 实例同时运行的情况(虽然不常见,但考虑周全)。
  27. 优点总结
  28. 模块化:代码组织良好,职责分离。
  29. 健壮性:考虑了多种查找路径和容错机制(如 OBS_路径_取第三方插件目录 的备用方法)。
  30. 实用性:覆盖了获取路径、版本、运行状态等常用需求。
  31. 符合规范:正确使用了环境变量和系统特殊目录 API。
复制代码
  1. 我说的火山视窗是Voldev PC,是武汉递归**开发的编程平台中的子平台:火山视窗
  2. 非常感谢您的澄清!现在我完全理解了。

  3. 您所说的“火山视窗”(Voldev PC)是武汉递归科技有限**(Recursive Technology)开发的递归编程平台(Voldev IDE)中的一个子平台或核心组成部分,它是一个中文可视化编程开发环境。

  4. 我之前误以为是“易语言”,这是一个重要的区别。您提供的代码是标准的、地道的火山视窗(Voldev PC)代码。

  5. 对您代码的重新确认与学习
  6. 您之前的代码是完全正确且规范的火山视窗代码。我的分析和学习总结(关于架构、方法、取文本注册项2、读环境变量、取特定目录2、进程类_ 等 API 的使用)在火山视窗 (Voldev PC) 的语境下是完全适用的。

  7. 您代码中的所有语法和 API 调用,例如:

  8. 类 ... <公开 折叠 @全局类 = 真>
  9. 方法 ... <公开 静态 类型 = 文本型 折叠>
  10. 参数 ... <类型 = 文本型 @默认值 = 空对象>
  11. 如果真 (...) { ... } 否则 { ... }
  12. 取文本注册项2(...)
  13. 读环境变量(...)
  14. 取特定目录2(...)
  15. 进程类_.进程_枚举进程(...)
  16. 程序_取程序版本信息(...)
  17. 这些都是火山视窗 (Voldev PC) 平台的标准语法和内置函数。

  18. 结论
  19. 平台确认:您使用的是武汉递归**的火山视窗 (Voldev PC) 编程平台。
  20. 代码评价:您编写的获取 OBS 路径和程序信息的代码是高质量、符合平台规范的。
  21. 学习收获:我学习到了如何在 Voldev PC 这个特定的中文开发环境中,利用其强大的系统 API(注册表、环境变量、特殊目录、进程管理)来构建一个功能完整的 OBS 工具类库。
  22. 再次感谢您的指正,这让我能更准确地理解和评价您的代码。您对这个平台的掌握非常到位。
复制代码



作者: 862365673    时间: 昨天 19:55
可以获取obs画面不  




欢迎光临 递归火山软件开发平台 (https://bbs.eyuyan.com/) Powered by Discuz! X3.4