2014-04-04 101 views
0


我有一个Java应用程序作为使用Apache Common Daemon(Windows Server 2008)的Windows服务安装。
我需要在我的应用程序中运行excel.exe命令,所以我设置了我的服务以便能够与桌面进行交互(通过选中服务属性上的“登录”选项卡中的框)。
通过这种方式,当我调用ProcessBuilder的start()方法时,弹出窗口here显示给我看。
从Windows服务运行Excel

有没有办法避免这种情况?

我的意图是将我的java应用程序作为服务运行,并行运行多个excel.exe实例以同时处理多个.xlsm文件,但我不想以任何方式进行交互。

我已阅读this有关会话0隔离的文章,所以我想知道是否真的有可能从WinServer 2008上的Windows服务启动许多excel.exe(或任何其他“GUI命令”)?

谢谢。

+1

也许财产以后类似http://krgreenlee.blogspot.de/2006/04/excel-running-excel-on-windows提供更多的细节-task.html似乎无GUI的情况下运行Excel? – zapl

+1

是的,这是可能的,但与JavaExe。 –

+0

使用zapl的提示我已经创建了一个调用excel并执行其他指令的.vbs。 一切似乎正常工作,但只有当用户登录。 如果我注销(我正在使用RDP与win server 2008进行交互),尽管服务仍在运行,ProcessBuilder似乎不再被触发。 有什么想法? 你知道如果使用JavaExe我也会遇到这个问题吗? – seph

回答

0

这是我迄今为止发现的解决方案(目前似乎正在工作)
遵循zapl的建议我制作了一个.vbs文件,以便直接使用脚本来执行我的宏。
然后我修改运行Excel用户匹配用来启动服务(感谢this)的一个
在此之后,我改变了我的ProcessBuilder从这个:

ProcessBuilder pb = new ProcessBuilder("cscript.exe", excelPathArg....) 

这样:

ProcessBuilder pb = new ProcessBuilder("cmd", "/C", "cscript.exe", excelPathArg.... 

现在,即使用来启动服务的用户注销的ProcessBuilder似乎正确地触发。

我会尽快,我会更深入到它