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

前端之家收集整理的这篇文章主要介绍了Delphi XE2新服务 – 为什么包含这些VCL单元?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有点疑惑为什么,当你在Delphi XE2中创建一个新的服务应用程序时,它是否包含这3个可视组件单元?

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单位.

猜你在找的Delphi相关文章