在服务里调用另一个带界面的程序不能正常运行

时间:2022-08-29 16:51:19
http://community.csdn.net/Expert/topic/4825/4825835.xml?temp=2.474612E-02
以上是tjianliang (乡关何处)提的问题?

我也想这样做可是在OnStart事件里写了两行代码:
  ShellExecute(0, nil, PChar('Svr.exe'), nil, nil, SW_SHOWNORMAL);
  LogMessage('Svr.exe Start', EVENTLOG_SUCCESS);


提示shllexecute没有定议?

7 个解决方案

#1


uses ShellAPI

#2


谢谢,可是为什么没有窗口出来呢?

#3


ShellExecute(handle, 'Open', PChar('Svr.exe'), nil, nil, SW_SHOWNORMAL);

#4


服务是启动了,但程序没有加载呀,也没有窗口出来,请高手指点一下。

#5


handle没有定义

#6


WinExec('Svr.exe', SW_NORMAL);

#7


--可能是因为选择了服务的登录用户后就无法选中服务程序的“允许服务与桌面交互”选项

通过服务启动程序是有可能看不到窗口的,因为在程序启动的时候有可能桌面Shell还没有执行,窗口当然没有地方可以显示。不过既然是服务程序,有没有窗口也应当不是很重要了吧。
如果需要窗口交互的话,也没有必要做成服务程序,在注册表的自启动项/自启动配置文件/开始菜单启动项里建一个快捷方式就行了

#1


uses ShellAPI

#2


谢谢,可是为什么没有窗口出来呢?

#3


ShellExecute(handle, 'Open', PChar('Svr.exe'), nil, nil, SW_SHOWNORMAL);

#4


服务是启动了,但程序没有加载呀,也没有窗口出来,请高手指点一下。

#5


handle没有定义

#6


WinExec('Svr.exe', SW_NORMAL);

#7


--可能是因为选择了服务的登录用户后就无法选中服务程序的“允许服务与桌面交互”选项

通过服务启动程序是有可能看不到窗口的,因为在程序启动的时候有可能桌面Shell还没有执行,窗口当然没有地方可以显示。不过既然是服务程序,有没有窗口也应当不是很重要了吧。
如果需要窗口交互的话,也没有必要做成服务程序,在注册表的自启动项/自启动配置文件/开始菜单启动项里建一个快捷方式就行了