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" });

更改自动化超时的方法是调用 CoRegisterMessageFilter 来注册 IMessageFilter 实现来处理 COM 调用,例如,调用 OLEUIBusy 以显示服务器繁忙对话框。

我不认为 Win32::OLE 实现了这一点,您可以尝试将 CoRegisterMessageFilter 代码包装在进程内 COM 服务器中,并在服务器中注册消息过滤器。

最新更新