是否可以在服务中使用从TWinControl派生的组件?

时间:2010-04-16 00:11:36

标签: delphi windows-services

我正在创建一个Delphi服务。有没有办法在服务中使用从TWinControl派生的控件?最终,控件和我放在它上面的任何控件都将保存到位图中。但是我尝试的任何东西都让“控制没有父窗口”错误。

我已经成功创建了一个TBitMap,可以完成相同的功能。但是,将所有功能内置到VCL中将大大简化任务。

3 个答案:

答案 0 :(得分:2)

你的程序抱怨控件没有父窗口,所以给它一个。创建一个表单并将控件放在那里。表单可以是顶级窗口,因此它们不需要父项。该表单将作为其余控件的父窗口。

它们仍然不可见,但它们至少会存在。

答案 1 :(得分:1)

我认为Windows服务不提供桌面服务。如果是这种情况(没有桌面),那么您将无法在服务中执行任何需要窗口句柄的操作。

TBitmap在那里工作,因为它使用位图句柄和内存DC。无需窗口处理。

答案 2 :(得分:0)

因为delphi服务应用程序不能使用twincontrol(表单单元)我总是使用windows服务包装器。现在我知道nssm最好的包装。它是一个开源应用程序,在服务模式下以系统帐户权限运行您的应用程序。它可以控制您的应用程序退出代码并记录它。