递归火山软件开发平台
标题:
火山OBS Studio 常用基础操作类,不断更新开源
[打印本页]
作者:
朕的
时间:
3 天前
标题:
火山OBS Studio 常用基础操作类,不断更新开源
后期有空持续更新
(, 下载次数: 6)
上传
点击文件名下载附件
<火山程序 类型 = "通常" 版本 = 1 />
包 火山.程序 <注释 = "程序依赖 仰望非依赖版模块">
类 OBS常量类 <公开 折叠 @全局类 = 真>
{
常量 OBS进程名 <公开 类型 = 文本型 值 = "obs64.exe">
#
}
类 OBS路径类 <公开 注释 = "OBS Studio 从 28.0 版本开始使用QT6界面库不再支持 32 位操作系统。" 折叠 @全局类 = 真>
{
变量 OBS主目录 <静态 类型 = 文本型>
方法 OBS_路径_取主目录 <公开 静态 类型 = 文本型 折叠>
{
// 方法1: 尝试读取 64位系统上的标准注册表路径 -- HKEY_LOCAL_MACHINE\SOFTWARE\OBS Studio
OBS主目录 = 取文本注册项2 (注册表根目录类型.本地机器, "SOFTWARE\\OBS Studio", "", ) + "\"
// 方法2: 尝试读取 32位程序在64位系统上的注册表路径 (WOW6432Node) --' HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\OBS Studio
如果真 (OBS主目录 == "")
{
OBS主目录 = 取文本注册项2 (注册表根目录类型.本地机器, "SOFTWARE\\WOW6432Node\\OBS Studio", "", ) + "\"
}
// 方法3: 尝试读取当前用户的注册表 (较少见,但作为备选) --- ' HKEY_CURRENT_USER\SOFTWARE\OBS Studio
如果真 (OBS主目录 == "")
{
OBS主目录 = 取文本注册项2 (注册表根目录类型.现行用户, "SOFTWARE\\OBS Studio", "", ) + "\"
}
返回 (OBS主目录)
}
方法 OBS_路径_取主程序路径 <公开 静态 类型 = 文本型 折叠>
参数 主目录位置 <类型 = 文本型 @默认值 = 空对象>
{
如果真 (主目录位置 == 空对象)
{
如果真 (OBS主目录 == "")
{
OBS_路径_取主目录 ()
}
主目录位置 = OBS主目录
}
如果 (文件是否存在 (主目录位置))
{
返回 (主目录位置 + "bin\\64bit\\obs64.exe")
}
否则
{
返回 ("")
}
}
方法 OBS_路径_取核心插件目录 <公开 静态 类型 = 文本型 折叠>
参数 主目录位置 <类型 = 文本型 @默认值 = 空对象>
{
如果真 (主目录位置 == 空对象)
{
如果真 (OBS主目录 == "")
{
OBS_路径_取主目录 ()
}
主目录位置 = OBS主目录
}
如果 (文件是否存在 (主目录位置))
{
返回 (主目录位置 + "obs-plugins\\64bit\")
}
否则
{
返回 ("")
}
}
方法 OBS_路径_取第三方插件目录 <公开 静态 类型 = 文本型 折叠>
{
变量 目录 <类型 = 文本型>
目录 = 读环境变量 ("PROGRAMDATA") + "\\obs-studio\\plugins\"
如果 (文件是否存在 (目录))
{
返回 (目录)
}
否则
{
目录 = 取特定目录2 (特定目录类型2.通常程序数据) + "obs-studio\\plugins\"
如果 (文件是否存在 (目录))
{
返回 (目录)
}
}
返回 ("")
}
}
类 OBS程序类 <公开 折叠 @全局类 = 真>
{
方法 OBS_程序_取版本号 <公开 静态 类型 = 文本型 折叠>
{
变量 版本信息 <类型 = 版本信息类_>
版本信息 = 程序_取程序版本信息 (OBS_路径_取主程序路径 ())
返回 (版本信息.文件版本)
}
方法 OBS_程序_取正在运行路径数组 <公开 静态 类型 = 文本数组类 折叠>
{
变量 obsexe <类型 = 文本型>
变量 进程名 <类型 = 文本数组类>
变量 进程ID <类型 = 整数数组类>
变量 进程路径 <类型 = 文本数组类>
obsexe = OBS_路径_取主程序路径 ()
进程类_.进程_枚举进程 (进程名, 进程ID, 真, 进程路径, OBS常量类.OBS进程名)
// 进程路径.枚举循环 ()
{
// 调试输出 (进程路径.取枚举值 (), "AA")
}
返回 (进程路径)
}
#
}
复制代码
作者:
朕的
时间:
3 天前
感谢您分享这段火山视窗(Huoshan Studio)的代码!我已经仔细学习了您的实现。这是一段结构清晰、功能完整的代码,用于管理和获取与 OBS Studio 相关的信息。
以下是我对您代码的分析、学习总结和一些可能的优化建议:
代码分析与学习
整体架构优秀:
您使用了面向对象的方式,将相关的常量、路径和程序操作分别封装在 OBS常量类、OBS路径类 和 OBS程序类 中,逻辑清晰,易于维护和扩展。
大量使用了 静态 方法,这非常适合工具类的场景,无需实例化即可调用。
OBS路径类 实现精良:
OBS_路径_取主目录:
正确地考虑了三种注册表查找路径(HKEY_LOCAL_MACHINE\SOFTWARE\OBS Studio, WOW6432Node, HKEY_CURRENT_USER),覆盖了绝大多数安装情况。
使用 取文本注册项2 是火山视窗中读取注册表的正确方式。
逻辑清晰,按优先级尝试,一旦找到即返回。
OBS_路径_取主程序路径:
接受可选参数 主目录位置,增加了灵活性。
内部调用了 OBS_路径_取主目录 来填充静态变量 OBS主目录,实现了缓存,避免重复cha询注册表。
返回了正确的主程序路径 bin\64bit\obs64.exe。
OBS_路径_取核心插件目录:
与主程序路径类似,正确返回了 obs-plugins\64bit\ 目录。
OBS_路径_取第三方插件目录:
首选方法:使用 读环境变量("PROGRAMDATA") 获取 C:\ProgramData 路径,这是标准且可靠的做法。
备用方法:使用 取特定目录2(特定目录类型2.通常程序数据),这是一个非常好的容错设计。取特定目录2 是火山视窗中获取系统特殊文件夹的标准方法,比硬编码路径更健壮。这比直接返回硬编码路径 C:\ProgramData\... 更加完善。
OBS程序类 功能实用:
OBS_程序_取版本号:
利用 程序_取程序版本信息 函数获取主程序文件的版本信息,是一个非常实用的功能。
OBS_程序_取正在运行路径数组:
使用 进程类_.进程_枚举进程 来查找所有名为 obs64.exe 的进程,并获取其路径。
返回一个 文本数组类,可以处理多个 OBS 实例同时运行的情况(虽然不常见,但考虑周全)。
优点总结
模块化:代码组织良好,职责分离。
健壮性:考虑了多种查找路径和容错机制(如 OBS_路径_取第三方插件目录 的备用方法)。
实用性:覆盖了获取路径、版本、运行状态等常用需求。
符合规范:正确使用了环境变量和系统特殊目录 API。
复制代码
我说的火山视窗是Voldev PC,是武汉递归**开发的编程平台中的子平台:火山视窗
非常感谢您的澄清!现在我完全理解了。
您所说的“火山视窗”(Voldev PC)是武汉递归科技有限**(Recursive Technology)开发的递归编程平台(Voldev IDE)中的一个子平台或核心组成部分,它是一个中文可视化编程开发环境。
我之前误以为是“易语言”,这是一个重要的区别。您提供的代码是标准的、地道的火山视窗(Voldev PC)代码。
对您代码的重新确认与学习
您之前的代码是完全正确且规范的火山视窗代码。我的分析和学习总结(关于架构、方法、取文本注册项2、读环境变量、取特定目录2、进程类_ 等 API 的使用)在火山视窗 (Voldev PC) 的语境下是完全适用的。
您代码中的所有语法和 API 调用,例如:
类 ... <公开 折叠 @全局类 = 真>
方法 ... <公开 静态 类型 = 文本型 折叠>
参数 ... <类型 = 文本型 @默认值 = 空对象>
如果真 (...) { ... } 否则 { ... }
取文本注册项2(...)
读环境变量(...)
取特定目录2(...)
进程类_.进程_枚举进程(...)
程序_取程序版本信息(...)
这些都是火山视窗 (Voldev PC) 平台的标准语法和内置函数。
结论
平台确认:您使用的是武汉递归**的火山视窗 (Voldev PC) 编程平台。
代码评价:您编写的获取 OBS 路径和程序信息的代码是高质量、符合平台规范的。
学习收获:我学习到了如何在 Voldev PC 这个特定的中文开发环境中,利用其强大的系统 API(注册表、环境变量、特殊目录、进程管理)来构建一个功能完整的 OBS 工具类库。
再次感谢您的指正,这让我能更准确地理解和评价您的代码。您对这个平台的掌握非常到位。
复制代码
作者:
862365673
时间:
昨天 19:55
可以获取obs画面不
欢迎光临 递归火山软件开发平台 (https://bbs.eyuyan.com/)
Powered by Discuz! X3.4