Delphi XE2新服务 – 为什么包含这些VCL单元?

我有点疑惑为什么,当你在Delphi XE2中创建一个新的服务应用程序时,它是否包含这3个可视组件单元?

@H_301_11@Vcl.Controls Vcl.Dialogs Vcl.Graphics

据我所知,这些单位中没有任何服务需要的东西.我可以看到Graphics单元可能用于某种图像处理,但这是开发人员实现它的问题.是否有一些理由将这些单元自动包含在新的服务应用程序中?如果我删除它们,它不会伤害任何东西……或者是吗?

解决方法

这是由IDE代码生成添加的,“以防万一”……
IDE主要创建表单,因此即使您的服务中不需要UI,它也会将其添加到您的服务模块中.

有趣的是,自Windows Vista / Seven以来,服务不再能够将GDI消息发送到桌面,即与之交互.因此,甚至没有可能从Windows服务使用对话框或UI控件.

事实上,甚至SvcMgr.pas链接到Forms.pas Dialogs.pas单位.因此,删除您自己单位中的参考将继续将这些单位链接起来.

SvcMgr.pas似乎需要Forms.pas Dialogs.pas单元,以便在命令行上安装服务时显示一些潜在的错误消息.

实际上,您的服务.exe不仅仅是作为服务在后台运行.它也可以从命令行运行,就像常规应用程序一样,以便安装/卸载/启动/停止服务.

您可以查看our lighter implementation of Windows services in Delphi – 但不是相同的功能 – 只需使用API​​.此版本不链接到Forms.pas和Dialogs.pas单位.

相关文章

ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的功能是:将源操作数送到目的操作数中,即:...
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂...
API原型: Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (By...