我试图通过Win32 :: OLE
访问OLE对象“Broker.Application”应用程序“Broker.exe”已手动启动。
使用cygwin perl从bash shell运行以下代码段,它正确地附加到正在运行的实例“Broker.exe”
$broker = Win32::OLE->new('Broker.Application') or die "Can't load Broker.Application";
但是当我从屏幕内部运行此片段时,它会创建一个新实例,如下所示
$ ps -W | grep -i broker
1912 0 0 1912 ? 0 01:07:37 C:\Program Files\AmiBroker\Broker.exe #Manually started
3896 0 0 3896 ? 0 14:39:41 C:\PROGRA~1\AMIBRO~1\Broker.exe #created by Win32::OLE from inside screen
尝试了Win32 :: OLE :: GetActiveObject()但没有任何帮助,因为即使实例正在运行它也会返回undef。
尝试使用SSH远程登录本机时,该脚本也会创建一个新实例而不是附加到正在运行的实例。
不确定从独立的bash shell和gnu屏幕内部运行这个perl脚本有什么不同。
请建议是否有任何解决方法从屏幕内部运行。