在新实例中打开SAS程序

在新实例中打开SAS程序,sas,ole,Sas,Ole,我正在试图找到一种方法,在默认情况下单击“增强编辑器”的新实例中打开SAS程序 这个问题以前提过,但没有运气 描述使用增强编辑器打开程序的方式。完整命令是: "C:\PROGRA~1\SASHome\SASFOU~1\9.3\core\sasexe\SASOACT.EXE" action=Open datatype=SASFile filename="%1" progid=SAS.Application.903 作者解释说: sasoact.exe程序用于启动SAS的OLE自动化会话。 自动

我正在试图找到一种方法,在默认情况下单击“增强编辑器”的新实例中打开SAS程序

这个问题以前提过,但没有运气

描述使用增强编辑器打开程序的方式。完整命令是:

"C:\PROGRA~1\SASHome\SASFOU~1\9.3\core\sasexe\SASOACT.EXE" action=Open
datatype=SASFile filename="%1" progid=SAS.Application.903 
作者解释说:

sasoact.exe程序用于启动SAS的OLE自动化会话。 自动化 是否有一个机制通过 哪个Windows应用程序可以通过编程方式控制另一个应用程序。双击SAS文件时 键入,sasoact.exe检查SAS的现有OLE自动化会话是否正在运行。如果不是,则调用 SAS的OLE自动化会话。一旦有一个活跃的 SAS自动化服务器会话,来自 sasoact.exe由现有SAS会话处理,而不是在新的SAS会话中处理 SAS会话

我想只有一个OLE会话在某种程度上是有用的,但是当你每次想要运行多个作业时都必须手动打开一个新的EE实例时,这真的很烦人。更不用说
sasoact
以启动的第一个会话为目标,如果作业已经在该会话上运行,那么您的程序将不会打开

有没有一种方法可以直接请求OLE会话的新实例,或者“欺骗”sasoact.exe,使其看不到打开的会话

[编辑]很遗憾,它被关闭为重复,因为答案与其他问题的答案有很大不同。它还可以帮助其他不想从批处理文件运行程序的人。 以下是有效的注册表项:

"C:\Program Files\SAS\SASFoundation\9.2(32-bit)\sas.exe" -initstmt "dm 'whost;include ''%1'' ';"  
我在
HKEY_CLASSES\u ROOT\SAS.Program.701\shell\Open New\command
中添加了它,因此现在我的下拉菜单中有了一个简洁的额外选项,可以有效地在新会话中打开程序


一个类似的线程显示在新会话中使用批处理文件打开SAS程序

如果要在新会话中打开.sas程序,只需单击此处的程序即可:

您必须向注册表添加一个条目。在处理注册表文件时要小心,请始终备份您的条目

打开注册表编辑器(WIN+R>regedit)。
在目录
HKEY\u CLASSES\u ROOT\SAS.Program.701\shell\
中,创建一个具有有意义名称的子目录(右键单击
shell
>New>键)。我把我的名字命名为“新开放”。在这个新的子目录中创建另一个名为
command
的子目录。您现在应该有一个如下所示的路径:
HKEY\u CLASSES\u ROOT\SAS.Program.701\shell\opennew\command

在这里,右键单击右侧注册表文件上的文件>修改并在值数据字段中添加以下内容(如果需要,更改sas.exe的路径)

关闭编辑器。您现在应该在右键单击.sas程序的下拉菜单中指定了新选项:

此选项将在新SAS会话中使用增强编辑器打开您的程序


现在,如果你想让它用于双击,我想你必须用上面的值替换
Open
子目录中的值。我没有这样做,我也不推荐这样做,下拉列表中的额外选项对我来说已经足够了。

查看Vasja在另一次提问时的回答-应该这样做;-)嗯,我错过了那个。我会尽快试一试。DankeI在作为dup关闭时犹豫不决,除非它确实有效;从cmd运行与双击非常不同。我将查看是否可以添加指向批处理文件的注册表项并将其设置为默认值,这将是一个复杂的解决方案,但它可能只是实现了这一点。Hi@Pane-如果这有一个解决方案。。。你的问题会被重新打开。然后你能把答案贴出来吗?此外,在那个阶段,您可能想指出一个问题,即现在将其标记为。。。这些都是明确相关的,即使不是完全相同的。
"C:\Program Files\SAS\SASFoundation\9.2(32-bit)\sas.exe" -NOTUTORIALDLG -initstmt "dm 'whost;include ''%1'' ';"