在 DXL 中,如何获取我未在 DXL 脚本中自行打开的模块的句柄

in DXL, how to get the handle of a module that I don't open myself in the DXL script

我有一个 DXL 脚本,可以打开(读取或编辑)模块并将它们放入跳过列表(这样我就可以在最后关闭它们)

跳过列表存储每个模块读取或编辑的模块句柄:

if (MODIF_OTHER_MODULES)
{
modSrc = edit(modSrc_Name, false)
} else 
{
modSrc = read(modSrc_Name, false) 
}
put(skp_openmodule, modSrc, modSrc) 

但有时模块已经在我的 DXL 脚本之外打开,所以下面的检查是 KO :

mvSource = sourceVersion lr 
modSrc_data = data mvSource 
modSrc_Name = fullName(source lr)

if (null modSrc_data)
"read/edit modSrc_Name module and add module in the skip list" : OK DONE
else
"the module is already open but maybe I don't open it myself"
"so I WANT TO CHECK if module is already in the skiplist and ADD module of modSrc_data in the precedent skip list if it isn't " : I DONT KNOW HOW !

"

有没有办法获取 modSrc_data 的模块,以便在 skp_openmodule 中不存在的情况下将其添加到列表中?

我不想再 read/edit 因为我不知道它以前是在哪种模式下打开的,我宁愿避免它,因为我会为每个对象和每个 link !

如果我还可以检索有关模块打开方式(读取或编辑)的信息,那就太好了

我试过: 模块(modSrc_data) 和 模块(modSrc_Name) 但它不起作用。

不确定这是否是由于您发布的摘录所致,但您应该始终关闭自动声明选项,并通过检查 DXL 手册或使用其他来源(例如“未记录的权限列表”。 dataModuleVersion return 类型 Module 上执行。所以你已经拥有了你需要的东西。另一种选择是烫发 bool open(ModName_ modRef)。并注意 perm module 不是 return 一个 Module,而是一个 ModName_。 此外,除了 bool isRead(Module m)bool isEdit(Module m)bool isShare(Module m)(!!) 之外,当您真的想关闭之前打开的模块时,您可能还需要检查 bool unsaved(Module m)

ModuleVersion mvSource = sourceVersion lr 
Module modSrc_data = data mvSource 
string modSrc_Name = fullName(source lr)

if (null modSrc_data)
    print "read/edit modSrc_Name module and add module in the skip list" 
else
{
    print "the module is already open but maybe I don't open it myself"
    if isRead (modSrc_data) then print " - read"
    if isEdit (modSrc_data) then print " - edit"
    if isShare (modSrc_data) then print " - shared mode"
    if unsaved (modSrc_data) then print " - do not silently close me, otherwise the user might be infuriated"
}