Win32 :: OLE создает новый экземпляр при запуске под «экраном GNU» - PullRequest
1 голос
/ 07 января 2012

Я пытаюсь получить доступ к объекту OLE "Broker.Application" через Win32 :: OLE

Приложение "Broker.exe" уже запускается вручную.

Запуская следующий фрагмент из оболочки bash с помощью cygwin perl, он правильно подключается к запущенному экземпляру "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, в этот раз этот сценарий также создает новый экземпляр вместо присоединения к запущенному экземпляру.

Не уверен, в чем разница между запуском этого сценария perl из изолированной оболочки bash и изнутри экрана gnu.

Пожалуйста, предложите, если есть какой-либо обходной путь для запуска его из внутреннего экрана.

...