perl win32 ole timeout

Я использую Perl и Win32::OLE для автоматизации некоторых задач Excel. Из-за того, что файл Excel слишком большой, процесс завершается довольно долго... Но, оставив его на ночь, я думаю, что он застрял из-за проблемы "тайм-аут". Если я уменьшу размер файла, тогда все в порядке.

В любом случае увеличить время ожидания?

Часть моего кода:

#   Open the rules file
my $xlBook = $xlApp->Workbooks->Open("$file");
my $xlSheet = $xlBook->Worksheets(1);

#Replace FALSE -> 0
$xlSheet->Cells->Replace ({ What => "FALSE", Replacement => "0" });
#Replace TRUE -> 1
$xlSheet->Cells->Replace ({ What => "TRUE", Replacement => "1" });

1 ответ

Решение

Способ изменить время ожидания автоматизации - вызвать CoRegisterMessageFilter, чтобы зарегистрировать вашу реализацию IMessageFilter для обработки COM-вызовов, скажем, вызвать OLEUIBusy, чтобы отобразить диалоговое окно занятости сервера.

Я не думаю, что Win32::OLE реализует это, вы можете попробовать обернуть код CoRegisterMessageFilter в внутрипроцессный COM-сервер и зарегистрировать фильтр сообщений на сервере.

Другие вопросы по тегам