我在Delphi 2010中编写了一个服务器,需要不时地启动一个控制台应用程序来备份数据库。控制台应用程序可以将日志信息发送到控制台窗口,但不是必需的。
这在作为应用程序运行时工作正常,但在作为服务运行时,我在启动控制台应用程序时会遇到访问冲突。即使我将其隐藏(SW_HIDE)也是如此。
是否可以从Windows服务启动隐藏的控制台应用程序?该解决方案需要在XP,Vista和Windows 7上运行。
编辑:当我调用ShellExecute时发生访问冲突。
答案 0 :(得分:5)
如果您使用ShellExecute
,则不要:它在服务中不起作用,几乎不是启动流程的最佳方式。
请改用CreateProcess
。
查看这一堆ShellExecute / CreateProcess question threads on stackoverflow。
- 的Jeroen